为什么我的颤振未来<String>异步函数返回空字符串?


Future<String> upload_to_server(File image) async {
var file;
String str;
String filename = image.path.split('/').last;
FormData formData = new FormData();
file = await MultipartFile.fromFile(image.path,
filename: filename, contentType: MediaType('image', 'jpeg'));
formData.files.add(MapEntry('photo', file));
Response response =
await Dio().post("http://10.0.2.2:5000/", data: formData);
if (response.statusCode == 200) str = jsonDecode(response.data.toString());
print(str);
return str;
}

这个函数返回一个空字符串,但是当我打印字符串的值时,我会得到一个非空字符串输出。我认为问题可能出在json解码上。有人能帮我弄清楚吗?

使用dio,您不必使用jsonDecode,response.data应该会为您提供字符串。

str = response.data;

出现问题是因为您试图解码response.data

Future<String> upload_to_server(File image) async {
var file;
String str;
String filename = image.path.split('/').last;
FormData formData = new FormData();
file = await MultipartFile.fromFile(image.path,
filename: filename, contentType: MediaType('image', 'jpeg'));
formData.files.add(MapEntry('photo', file));
Response response =
await Dio().post("http://10.0.2.2:5000/", data: formData);
if (response.statusCode == 200) {
str = response.data.toString();
print(str);
return str;
}else{
throw Expression('Failed to Load Response');
}

如果您想解码,请尝试以下方式:

dynamic str = jsonDecode(jsonEncode(response.data));

希望这件作品的

您可以尝试:

var data = json.decode(json.encode(response.data));

相关内容

最新更新