简体   繁体   English

Riverpod:initState 方法中的访问提供程序

[英]Riverpod : Access Provider in initState method

Trying to read a streamProvider inside initState, but failed.尝试读取 initState 中的 streamProvider,但失败。 Enlight me please, what am I doing wrong here?请启发我,我在这里做错了什么?

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

So far, what I found that context.read(userStreamProvider) only works inside build(BuildContext context) method到目前为止,我发现context.read(userStreamProvider)仅适用于build(BuildContext context)方法

Your code works.您的代码有效。 The problem is, you are not waiting for the user to be loaded.问题是,您不是在等待用户加载。

What you want is probably:你想要的大概是:

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

By reading userStreamProvider.last , you will be able to wait for the user to be loaded.通过阅读userStreamProvider.last ,您将能够等待用户被加载。 You can then use .then or await like with all futures.然后您可以像所有期货一样使用.thenawait

I'm using latest river pod version.我正在使用最新的 River pod 版本。 It's not support that context.read function for getting provide values in initstate.它不支持 context.read function 以获取 initstate 中的提供值。 How to access provider in initstate using current version of riverpod.如何使用当前版本的 Riverpod 在 initstate 中访问提供者。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM