flutter - 如何用Future Http Post的结果显示Snackbar?

标签 flutter dart return http-post future

我正在尝试获取“文件已上传”。从成功的Future HTTP发布请求返回的字符串,以便我可以创建SnackBar,但从返回中获得的所有内容都是null。这是调用Future的按钮;

IconButton(

    icon: Icon(TriangleAll.upload_3, ),

    onPressed: () async {

    replyresult = await uploadReply(
    filepath: _current.path);
)

 if (replyresult != null){

 print(replyresult);

    }
  }
)
这是 future 的代码;
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。我知道发布成功,因为我可以在控制台中看到正确的打印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 '';
或在Future之前添加一个await

关于flutter - 如何用Future Http Post的结果显示Snackbar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63467440/

相关文章:

flutter - 如何使滚动条始终可见?

flutter - ClojureDart : Execution error at cljd. 编译器/load-libs-info (compiler.cljc :126). EOF 读取时

user-interface - Flutter 中的 Neumorphic/neomorphic 设计

flutter - http请求的User模型的属性返回null

javascript - 返回键不适用于许多文本区域

flutter - 意外的 DropdownButtonFormField 行为

flutter - cupertino_localizations 1.0.0 + 1取决于国际^ 0.15.8

通过容器的图像

c# - 如何从方法的 switch 语句返回不确定类型的值

javascript - 原型(prototype)和嵌套返回函数,帮助!