Flutter 颤振未来生成器:类型';答复';不是类型为';字符串';
我试图使用flift的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) {
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()
正在返回typeString
?您必须等待未来的到来
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,这是有问题的,如下所示: