我正在使用 Flutter 并尝试使用 FutureBuilder 根据 Provider 包管理的状态来获取数据。我面临的挑战是我的未来取决于我可以通过
Provider.of<MyData>(context)
进入的状态。
问题来了:
我目前的方法:
class MyWidget extends StatelessWidget {
final Future<DataType> future;
MyWidget() : future = fetchData(); // This can't access context
@override
Widget build(BuildContext context) {
final myData = Provider.of<MyData>(context); // Need to use myData here
// Creating the Future here causes it to recompute on every build
final future = fetchDataBasedOn(myData);
return FutureBuilder<DataType>(
future: future,
builder: (context, snapshot) {
// Build your widget based on snapshot
},
);
}
}
我的问题: 如何以只计算一次的方式管理 Future,并且仍然能够访问提供者的状态?是否有推荐的模式可以使用 Flutter 的 FutureBuilder 和 Provider 来实现这一目标?
任何建议或示例将不胜感激!
您可以使用 init() 方法来管理未来,它只计算一次,您也可以访问提供者状态。