Flutter:如何提取未来的对象,以便像处理普通对象一样处理它?



我想从http请求中提取未来对象,以便我可以将其用作小部件中的常规对象。我怎样才能做到这一点呢?(抽象代码示例如下)

class _SomePageState extends State<SomePage> {
Data? _data;
@override
void initState() {
_loadData();
super.initState();
}
void _loadData() async {
await Service.getData().then((value) {
setState(() {
_data = value;
});
});
}
@override
Widget build(BuildContext context) {
//further use of the _data variable
}
}

在这种情况下,我将有lateInitialization Error。总的来说,我希望听到关于使用未来对象的简短建议和解释。由于

通常在build方法中使用Future时,我们使用FutureBuilder。以下是谷歌团队如何使用它的视频。

在你的例子中:

_loadData()函数中:

Future _loadData() async {
await data = Service.getData();
return data;
}

build方法

@override
Widget build(BuildContext context) {
return DefaultTextStyle(
style: Theme.of(context).textTheme.headline2!,
textAlign: TextAlign.center,
child: FutureBuilder<String>(
future: _loadData(), 
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.hasData) {
return Text("data exists");
} else if (snapshot.hasError) {
return Text(snapshot.error as String);
} else {
return CircularProgressIndicator();
}

},
),
);
}

相关内容

  • 没有找到相关文章

最新更新