【问题标题】:How to read StateNotifierProvider state inside FutureProvider如何在 FutureProvider 中读取 StateNotifierProvider 状态
【发布时间】:2021-07-02 17:16:47
【问题描述】:

我有一个StateNotifierProvider,它有一个类变量的getter 和setter 方法。 我正在尝试通过FutureProvider 中的getter 方法访问类变量值 我尝试了多种方法来访问 FutureProvider 中的值,但无法获得任何成功。

我收到以下错误
errror snapshot
告诉我正确的方法。

class SelectedPost extends StateNotifier<String> {
  SelectedPost() : super("");
  var uuid;
  void setPostId(String id) {
    uuid = id;
  
  }

  String getPostId() {
    return uuid;
    
  }
}

这里我尝试访问getter方法来获取uuid

final selectedPostProvider = StateNotifierProvider((ref) =>  new SelectedPost());

final detailPostFuture = FutureProvider<Post>((ref) async {
  final _selectedPostProvider = ref.watch(selectedPostProvider);

  return fetchDetailPost(_selectedPostProvider.getPostId());
});

【问题讨论】:

    标签: flutter riverpod


    【解决方案1】:

    如果你想使用状态本身,使用这个。

    final detailPostFuture = FutureProvider<Post>((ref) async {
      final _selectedPostProvider = ref.watch(selectedPostProvider);
    });
    

    如果您只想访问成员(如函数、变量),请使用它。

    final detailPostFuture = FutureProvider<Post>((ref) async {
      final _selectedPostProvider = ref.watch(selectedPostProvider.notifier);
    });
    

    如果你想同时使用这两个,使用这个。

    final detailPostFuture = FutureProvider<Post>((ref) async {
      final _selectedPostState = ref.watch(selectedPostProvider);
    
      final _selectedPostProvider = ref.watch(selectedPostProvider.notifier);
    });
    

    请参阅 this 迁移文档以供参考。

    【讨论】:

    • 状态如何通过getter方法给出uuid的值?
    • 您可以从最后一个代码 sn-p 访问任何具有_selectedPostProvider 的类成员。例如,_selectedPostProvider.uuid,将赋予uuid 属性。我会鼓励您了解StateNotifier 和班级成员的状态之间的区别。 StateNotifier上有很多教程。你可以从here开始。
    • 如何访问不工作的getter方法?对此有何解释?
    • @RajanChauhan 你能解释一下where it's not working 部分吗?您在哪里以及如何访问它?哪个getter函数?需要更多上下文。
    • 这一行return fetchDetailPost(_selectedPostProvider.getPostId())
    【解决方案2】:

    您需要查看通知程序本身。可以通过以下方式完成:

    final _selectedPostNotifier = ref.watch(selectedPostProvider.notifier);
    

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2021-09-23
      • 2021-03-24
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多