3

尝试读取 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)方法内部有效

4

1 回答 1

10

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

你想要的可能是:

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

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

于 2020-10-04T11:58:20.630 回答