在我的应用程序中,我有一个屏幕,其中包含3个不同的未来建设者,我想更新从未来的建设者恢复的数据。我尝试了setState()方法,但这更新了页面上所有3个未来的构建器,我只需要更新一个。我该怎么办?
我的3个future builder的结构是这样的:
FutureBuilder(
future: getData(), //Fetch the data
builder:
(context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Text('${snapshot.data}',
style: const TextStyle(
fontSize: 15,
color: Colors.black));
} else {
return const CircularProgressIndicator.adaptive();
}
})
如果您只想重建屏幕的一部分,您可以使用StatefulBuilder
。用StatefulBuilder
包装您想要重建的单个FutureBuilder
,如下所示:
StatefulBuilder(
builder: (context, setState) {
return YourFutureBuilder();
},
)
如果从StatefulBuilder
内部调用setState
,则只有用StatefulBuilder
包装的屏幕部分将被重建。
Setstate将始终重新构建您的页面。请使用一些状态管理插件,如getx,provider来更新某些部分。