Riverpod:initState 方法中的访问提供者
Riverpod : Access Provider in initState method
正在尝试读取 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
。
正在尝试读取 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
。