flutter - 如何用未来 Http Post 的结果显示 Snackbar?
问题描述
我正在尝试获取“文件已上传”。从成功的 Future HTTP post 请求中返回字符串,以便我可以创建一个SnackBar
,但我从返回中得到的只是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
变量来创建snackbar
成功的 200 服务器响应。我知道帖子是成功的,因为我可以serverResponse
在控制台中看到正确的打印内容。
我试图简单地做;
return response.body ;
但我仍然在replyresult
变量处得到空值。
解决方案
因为该方法在响应到达之前返回Future
,所以这样做
var response = await http.Response.fromStream(result);
if (response.statusCode == 200) {
serverResponse = response.body;
print(serverResponse);
return serverResponse ;
} else return '';
或await
领先于Future。
推荐阅读
- r - 错误:找不到对象“skim_without_charts”
- python - 神经网络中的特征重要性(分类问题)
- html - 更新 HTML/CSS 以使内容显示在右侧而不是下方
- c - 不明白管道是如何工作的。(UNIX 进程之间的共享内存)
- c++ - 优化之间的 C++ 程序行为不同
- json - 如何填充以 json 开头的列表的 href?
- javascript - Google Charts JS haxis 标签文本对齐控件
- firebase - 使用 sms_maintained 和 FCM 发送短信
- ios - 如何在 iOS 后台持续跟踪位置?
- python - 如何在 python 中永远沉睡?