如何使用 Future Http Post 的结果显示 Snackbar?
How to Show Snackbar with the Result of Future Http Post?
我正在尝试获取“文件已上传”。从成功的 Future HTTP post 请求返回的字符串,以便我可以创建一个 SnackBar
,但我从 return 返回的只是 null
。这是调用 Future
;
的按钮
IconButton(
icon: Icon(TriangleAll.upload_3, ),
onPressed: () async {
replyresult = await uploadReply(
filepath: _current.path);
)
if (replyresult != null){
print(replyresult);
}
}
)
这是未来的代码;
Future<String> uploadReply(
}) async {
final serverurl = "http://example.com/example.php";
final filepath = "examplefilepath";
String serverResponse;
var request = http.MultipartRequest('POST', Uri.parse(serverurl));
var multiPartFile = await http.MultipartFile.fromPath("audio", filepath,
contentType: MediaType("audio", "mp4"));
request.files.add(multiPartFile);
request.send().then((result) async {
http.Response.fromStream(result).then((response) {
if (response.statusCode == 200) {
serverResponse = response.body;
print(serverResponse);
return serverResponse ;
}
});
});
}
我正在尝试使用 replyresult
变量在成功的 200 服务器响应后创建 snackbar
。我知道 post 是成功的,因为我可以在控制台中看到正确打印的 serverResponse
。
我试过简单地做;
return response.body ;
但我仍然在 replyresult
变量处得到 null。
因为方法 returns 在响应到达 Future
之前,执行此操作
var response = await http.Response.fromStream(result);
if (response.statusCode == 200) {
serverResponse = response.body;
print(serverResponse);
return serverResponse ;
} else return '';
或未来的单个 await
。
这是有效的方法。
var multiPartFile = await http.MultipartFile.fromPath("audio", filepath,
contentType: MediaType("audio", "mp4"));
request.files.add(multiPartFile);
final response = await http.Response.fromStream(await request.send());
String serverResponse;
if (response.statusCode == 200) {
String serverResponse = response.body;
print(serverResponse);
return serverResponse;
}
我正在尝试获取“文件已上传”。从成功的 Future HTTP post 请求返回的字符串,以便我可以创建一个 SnackBar
,但我从 return 返回的只是 null
。这是调用 Future
;
IconButton(
icon: Icon(TriangleAll.upload_3, ),
onPressed: () async {
replyresult = await uploadReply(
filepath: _current.path);
)
if (replyresult != null){
print(replyresult);
}
}
)
这是未来的代码;
Future<String> uploadReply(
}) async {
final serverurl = "http://example.com/example.php";
final filepath = "examplefilepath";
String serverResponse;
var request = http.MultipartRequest('POST', Uri.parse(serverurl));
var multiPartFile = await http.MultipartFile.fromPath("audio", filepath,
contentType: MediaType("audio", "mp4"));
request.files.add(multiPartFile);
request.send().then((result) async {
http.Response.fromStream(result).then((response) {
if (response.statusCode == 200) {
serverResponse = response.body;
print(serverResponse);
return serverResponse ;
}
});
});
}
我正在尝试使用 replyresult
变量在成功的 200 服务器响应后创建 snackbar
。我知道 post 是成功的,因为我可以在控制台中看到正确打印的 serverResponse
。
我试过简单地做;
return response.body ;
但我仍然在 replyresult
变量处得到 null。
因为方法 returns 在响应到达 Future
之前,执行此操作
var response = await http.Response.fromStream(result);
if (response.statusCode == 200) {
serverResponse = response.body;
print(serverResponse);
return serverResponse ;
} else return '';
或未来的单个 await
。
这是有效的方法。
var multiPartFile = await http.MultipartFile.fromPath("audio", filepath,
contentType: MediaType("audio", "mp4"));
request.files.add(multiPartFile);
final response = await http.Response.fromStream(await request.send());
String serverResponse;
if (response.statusCode == 200) {
String serverResponse = response.body;
print(serverResponse);
return serverResponse;
}