如何在 FutureProvider 中读取 StateNotifierProvider 状态

时间:2021-07-02 17:16:47

标签: flutter riverpod

我有一个 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());
});

2 个答案:

答案 0 :(得分:2)

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

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 迁移文档以供参考。

答案 1 :(得分:0)

您需要观察通知程序本身。可以通过使用:

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