尝试读取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)
法
您的代码可以正常工作。问题是,您没有等待加载用户。
你想要的可能是:
@override
void initState() {
super.initState();
context.read(userStreamProvider.last).then((user) {
print('user $user');
});
}
通过读取userStreamProvider.last
,您将能够等待加载用户。然后,您可以像使用所有期货一样使用.then
或await
。
我使用的是最新的river pod版本。它不支持context.read函数来获取initstate中的provide值。如何使用当前版本的riverpod访问initstate中的提供程序。