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,您将能够等待 加载用户。然后,您可以像所有期货一样使用 .thenawait