我正在尝试在发送Future的数据之后设置提供程序,以便在将来发送的数据之后返回窗口小部件时,该窗口小部件可以从提供程序获取数据。
我尝试做以下两件事:
我尝试过的事情:
ListWidget
的构建方法中将提供程序设置为将侦听器设置为false,但会收到错误消息:在构建过程中调用setState()或markNeedsBuild()。
ListWidget
更改为状态窗口小部件,然后在initState方法中设置listManager提供程序,但由于我无权在initState方法中访问context
,因此无法设置。代码如下:
class TopContent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder<List<ListItem>>(
future: getAll(),
builder: (context, snapshot) {
if (snapshot.hasError) return Text('This is an error');
else if (snapshot.hasData) return ListWidget();
return Text("loading");
},
);
}
}
class ListWidget extends StatelessWidget {
// Provider has to be set to the Future data at this point in the app
@override
Widget build(BuildContext context) {
final listManager = Provider.of<ListManager>(context);
// Do something with listManager
return Text("has Text man");
}
}
Future<List<ListItem>> getAll() async {
... http Request
}
请让我知道我的方法是否错误,正确的解决方法是什么。