【问题标题】:Riverpod : Access Provider in initState methodRiverpod : initState 方法中的访问提供程序
【发布时间】:2021-01-19 10:07:20
【问题描述】:

尝试读取 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)方法

【问题讨论】:

    标签: flutter dart provider riverpod


    【解决方案1】:

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

    你想要的大概是:

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

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

    【讨论】:

    • 天啊!你回答了我的问题!
    猜你喜欢
    • 2019-12-24
    • 2021-05-30
    • 2021-01-19
    • 2021-08-12
    • 2021-12-01
    • 2021-10-13
    • 2022-11-11
    • 2021-02-25
    • 2013-03-14
    相关资源
    最近更新 更多