Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振未来生成器:类型';答复';不是类型为';字符串';_Flutter_Http_Flutter Futurebuilder - Fatal编程技术网

Flutter 颤振未来生成器:类型';答复';不是类型为';字符串';

Flutter 颤振未来生成器:类型';答复';不是类型为';字符串';,flutter,http,flutter-futurebuilder,Flutter,Http,Flutter Futurebuilder,我试图使用flift的FutureBuilder和http.get()作为未来参数,如下所示: child: FutureBuilder( future: http.get( Uri.http('192.168.31.144:8000', 'api/v1/login')), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) {

我试图使用flift的
FutureBuilder
http.get()
作为未来参数,如下所示:

child: FutureBuilder(
  future: http.get(
      Uri.http('192.168.31.144:8000', 'api/v1/login')),
  builder: (context, snapshot) {
    if (snapshot.connectionState ==
        ConnectionState.done) {
      if (snapshot.hasError) {
        return Text('error');
      }
      return Text(snapshot.data);
    } else {
      return SpinKitFadingCircle(color: Colors.white);
    }
  },
),
我得到以下错误:
在生成FutureBuilder(脏,状态:_FutureBuilderState#0caa6)时引发了以下类型错误:类型“Response”不是类型“String”的子类型。


据我所知,FutureBuilder需要type
Future
作为它的未来,但是
http.get()
正在返回type
String

您必须等待未来的到来

Future<dynamic> getData() async {
return await http.get(Uri.http('192.168.31.144:8000', 'api/v1/login');
}



 child: FutureBuilder(
      future: getData(),
      builder: (context, snapshot) {
        if (snapshot.connectionState ==
            ConnectionState.done) {
          if (snapshot.hasError) {
            return Text('error');
          }
          return Text(snapshot.data);
        } else {
          return SpinKitFadingCircle(color: Colors.white);
        }
      },
    ),
Future getData()异步{
return wait http.get(Uri.http('192.168.31.144:8000','api/v1/login');
}
孩子:未来建设者(
future:getData(),
生成器:(上下文,快照){
如果(snapshot.connectionState==
连接状态(完成){
if(snapshot.hasError){
返回文本('error');
}
返回文本(snapshot.data);
}否则{
返回SpinKitFadingCircle(颜色:Colors.white);
}
},
),

我尝试过此操作。它会导致另外2个错误:1
参数类型“Response”无法分配给参数类型“Future”
2
等待表达式只能在异步函数中使用。请尝试将函数体标记为“async”或“async*”
我已编辑了答案,请将函数添加到类中,然后立即重试无需等待FutureBuilder!它基本上会在future:parameter上自动执行此操作。但您有一个不同的问题,因为您在每次调用build()时都要创建future,这是有问题的,如下所示: