Riverpod : initState 方法中的访问提供程序
Posted
技术标签:
【中文标题】Riverpod : initState 方法中的访问提供程序【英文标题】:Riverpod : Access Provider in initState method 【发布时间】:2021-01-19 10:07:20 【问题描述】:尝试读取 initState 中的 streamProvider,但失败。请启发我,我在这里做错了什么?
@override
void initState()
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp)
final userStream = context.read(userStreamProvider);
print('user : $userStream'); // user : AsyncValue<Null>.loading()
);
到目前为止,我发现context.read(userStreamProvider)
只在内部起作用
build(BuildContext context)
方法
【问题讨论】:
【参考方案1】:您的代码有效。问题是,您没有等待加载用户。
你想要的大概是:
@override
void initState()
super.initState();
context.read(userStreamProvider.last).then((user)
print('user $user');
);
通过阅读userStreamProvider.last
,您将能够等待加载用户。然后,您可以像使用所有期货一样使用 .then
或 await
。
【讨论】:
天啊!你回答了我的问题!以上是关于Riverpod : initState 方法中的访问提供程序的主要内容,如果未能解决你的问题,请参考以下文章
等效于 Riverpod 中的 ChangeNotifierProvider 小部件
Riverpod:是不是有在另一个 StreamProvider 中读取 StreamProvider 的正确方法?
Riverpod:在 ConsumerWidget 中覆盖 initState 的另一种方法
RiverPod - 如何在不在小部件中的 AsyncValue 上等待使用 FutureProvider