Flutter GetX 控制器获取空值而不是数据
Flutter GetX controller getting null instead of data
我有一个 API(它确实有效并且 return 是一个响应,我什至可以在 return
语句上方看到响应 1 行),但出于某种原因,当数据应该传递给变量时,我收到 null,而不是 returned 值。
服务 return 数据 我确实从 API 获取值,至少它说明return.
之前的变量中有数据
应该包含数据的resp变量显示值为空。
api_service.dart <= Returns 一个值
import 'dart:io';
import 'package:http/http.dart' as http;
import 'dart:convert';
class RemoteServices {
static var client = http.Client();
static Future sendImageForAnalysis(String filename) async {
var request =
http.MultipartRequest('POST', Uri.parse("http://10.0.2.2:8000/api"));
request.files.add(http.MultipartFile('picture',
File(filename).readAsBytes().asStream(), File(filename).lengthSync(),
filename: filename.split("/").last));
var res = await request.send();
if (res.statusCode == 200) {
http.Response.fromStream(res)
.then((response) {
var dataAsJson = json.decode(response.body);
/* The variable from above does have data, it's not empty and none of the errors appears*/
return dataAsJson;
})
.catchError((error) => print('Something went wrong')) /* Error is not showing */
.whenComplete(() => print('Got data from the server'));
} else {
/* Code does not get here */
return {'name': 'x'};
}
}
}
controller_results.dart <= 显示空值,而不是值。
import 'package:face_search/services/api_service.dart';
import 'package:get/get.dart';
class ResultsController extends GetxController {
final data = {}.obs;
final name = ''.obs;
void getItemData(imagePath) async {
var resp = await RemoteServices.sendImageForAnalysis(imagePath);
print(resp); /* This is empty for some reason */
if (resp != null) {
data.value = resp;
}
}
}
api return json 的结果是?如果它 return json 为什么不尝试为它创建一个模型并调用控制器上的列表,这样您就可以自由地知道它是否有数据 return.
您在 http.Response.fromStream(res)
之前缺少 return
。
我有一个 API(它确实有效并且 return 是一个响应,我什至可以在 return
语句上方看到响应 1 行),但出于某种原因,当数据应该传递给变量时,我收到 null,而不是 returned 值。
服务 return 数据 我确实从 API 获取值,至少它说明return.
之前的变量中有数据应该包含数据的resp变量显示值为空。
api_service.dart <= Returns 一个值
import 'dart:io';
import 'package:http/http.dart' as http;
import 'dart:convert';
class RemoteServices {
static var client = http.Client();
static Future sendImageForAnalysis(String filename) async {
var request =
http.MultipartRequest('POST', Uri.parse("http://10.0.2.2:8000/api"));
request.files.add(http.MultipartFile('picture',
File(filename).readAsBytes().asStream(), File(filename).lengthSync(),
filename: filename.split("/").last));
var res = await request.send();
if (res.statusCode == 200) {
http.Response.fromStream(res)
.then((response) {
var dataAsJson = json.decode(response.body);
/* The variable from above does have data, it's not empty and none of the errors appears*/
return dataAsJson;
})
.catchError((error) => print('Something went wrong')) /* Error is not showing */
.whenComplete(() => print('Got data from the server'));
} else {
/* Code does not get here */
return {'name': 'x'};
}
}
}
controller_results.dart <= 显示空值,而不是值。
import 'package:face_search/services/api_service.dart';
import 'package:get/get.dart';
class ResultsController extends GetxController {
final data = {}.obs;
final name = ''.obs;
void getItemData(imagePath) async {
var resp = await RemoteServices.sendImageForAnalysis(imagePath);
print(resp); /* This is empty for some reason */
if (resp != null) {
data.value = resp;
}
}
}
api return json 的结果是?如果它 return json 为什么不尝试为它创建一个模型并调用控制器上的列表,这样您就可以自由地知道它是否有数据 return.
您在 http.Response.fromStream(res)
之前缺少 return
。