Dart的http包不再返回Flutter项目中的任何内容

wfauudbj  于 2023-05-07  发布在  Flutter
关注(0)|答案(1)|浏览(172)

我有这个简单的功能:

Future<Widget> getDog() async{
    var res = await http.get(Uri(scheme: "https", host:"random.dog", path:"/woof.json" ));
    print(res.statusCode);
    if(res.statusCode != 200) throw Exception();
    
    return Image.network(jsonDecode(res.body)["url"]);
  }

http.get函数不再工作。之前还可以,但是现在没有返回任何东西,线程被卡住了(print函数永远不会被调用)。这个问题也发生在我的一个老项目中。可能是什么原因呢?
这个函数肯定被调用了,因为我调试了它并且断点被激活了。我尝试在Android清单上添加Internet权限,但无济于事。flutter doctor -v没有任何错误。flutter packages get也被使用。
我试着看看老的SO帖子,但不能像我的问题,至少没有任何工作修复。

n53p2ov0

n53p2ov01#

在控制台中没有看到任何异常吗?
你也可以试试这个:

Future<Widget> getDog() async{
    try {
        var res = await http.get(Uri(scheme: "https", host:"random.dog", path:"/woof.json" ));
        print(res.statusCode);
        if(res.statusCode != 200) throw Exception();
    
        return Image.network(jsonDecode(res.body)["url"]);
    } catch(error, stacktrace) {
        print("${error.toString()}\n${stacktrace.toString()}");
    }
  }

像这样,如果抛出了一个异常,你可以在控制台中打印它。

相关问题