gpt4 book ai didi

flutter - 如何在 flutter 中从 FutureProvider 获取数据

转载 作者:IT王子 更新时间:2023-10-29 07:17:11 26 4
gpt4 key购买 nike

我正在尝试在使用 Provider 管理的 flutter 应用程序中实现本地数据库支持,现在我想让数据检索遵循状态管理模式,但我一直未能做到。

我试图创建一个传统的 Provider 来实现这一点,但是应用程序陷入了对数据库的请求循环中,所以经过一些搜索我找到了 FutureProvider,但我找不到如何从正在加载数据

class _ReceiptsRouteState extends State<ReceiptsRoute> {
List<Receipt> receipts = [];

@override
Widget build(BuildContext context) {
return FutureProvider(
initialData: List(),
builder: (_){
return DBProvider().receipts().then((result) {
receipts = result;
});
},
child: Scaffold(
appBar: AppBar(
title: Text(AppLocalizations.of(context).history),
),
body: Container(
child: ListView.builder(
itemBuilder: (context, position) {
final item = receipts[position];
return ListTile(
title: Text(item.date),
);
},
),
),
),
);
}
}

现在我的应用程序正在按我想要的方式运行,但不是它应该如何运行,我使用 FutureBuilder 直接从数据库中获取数据,但我知道它应该通过提供程序来运行,所以我想把它做对

最佳答案

FutureProviderbuilder 返回的 Future 的结果公开给它的后代。

因此,使用以下 FutureProvider:

FutureProvider<int>(
initialData: 0,
builder: (_) => Future.value(42),
child: ...
)

可以通过以下方式获取当前值:

Provider.of<int>(context)

或:

Consumer<int>(
builder: (context, value, __) {
return Text(value.toString());
}
);

关于flutter - 如何在 flutter 中从 FutureProvider 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56989807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com