Riverpod:initState 方法中的访问提供者

tow*_*hid 2 provider dart flutter riverpod

试图读取 initState 中的 streamProvider,但失败了。请启发我,我在这里做错了什么?

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      final userStream = context.read(userStreamProvider);
      print('user : $userStream'); // user : AsyncValue<Null>.loading()
    });
  }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现context.read(userStreamProvider)只在build(BuildContext context)方法内部 有效

Rém*_*let 7

您的代码有效。问题是,您不是在等待用户加载。

你想要的大概是:

  @override
  void initState() {
    super.initState();
    context.read(userStreamProvider.last).then((user) {
      print('user $user');
    });
    
  }
Run Code Online (Sandbox Code Playgroud)

通过阅读userStreamProvider.last,您将能够等待用户加载。然后您可以使用.thenawait喜欢所有期货。