【发布时间】:2021-11-09 10:05:03
【问题描述】:
我想使用多个 Future,所以我在 FutureBuilder 中实现了 Future.wait 功能。
但只要页面状态发生变化,它就会不断重建。如何在 Future.wait 中缓存期货?
代码如下:
GetBuilder<OrdersMainController>(builder: (controller) {
return FutureBuilder(
future: Future.wait([controller.ordersFuture.value]),// lets me use multiple futures
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.active:
case ConnectionState.waiting:
case ConnectionState.done:
if (snapshot.hasError) {
return SizedBox(
width: double.infinity,
height: 600,
child: Center(
child: Text(snapshot.error.toString(),
style:
Theme.of(context).textTheme.caption!)));
}
controller.ordersData.value = (snapshot.data! as List)[0];
final DataTableSource _data =
OrdersMainSource(controller.ordersData.value.data!);
return ...
default:
return ...;
}
});
})
【问题讨论】:
-
检查
AsyncMemoizer- 官方文档说:“一个只运行一次异步函数并缓存其结果的类。” -
您也可以将
Future保存到成员变量中。 -
尝试将
id放入您可以指定id:"someText"的GetBuilder 中,update(["someText"])中给出的相同文本将触发重建。如果update()没有 id 它不会重建。
标签: flutter dart flutter-getx