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

时间:2020-10-04 10:18:02

标签: flutter dart provider

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

1 个答案:

答案 0 :(得分:3)

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

您想要的可能是:

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

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