如何执行riverpod的FamilyAsyncNotifier中的成员方法?

问题描述 投票:0回答:1

如何执行FamilyAsyncNotifier中的成员方法?
(这是对我的上一个问题的连续问题。) 我通过向 FamilyAsyncNotifier 传递参数来初始化它。但是,现在我无法执行 FamilyAsyncNotifier 中的成员方法。 当它只是AsyncNotifier时,成员方法是这样调用的。

等待 ref.read(postViewModel.notifier).fetchTargetPost(targetPostId);

但是,我无法使用 FamilyAsyncNotifier 调用它。有人知道如何调用 FamilyAsyncNotifier 中的成员方法吗?我只是想将参数传递给 AsyncNotifier,但 FamilyAsyncNotifier 似乎变得更加复杂。我真的很感谢任何人的帮助。

final postViewModel =
    AsyncNotifierProvider.family<PostViewModel, Post?, String>(
  () => PostViewModel(),
);

class PostViewModel extends FamilyAsyncNotifier<Post?, String> implements BasePostListInterface {

  late final FetchPostUseCase _fetchPostUseCase =
      ref.read(fetchPostUseCaseProvider);

  @override
  FutureOr<Post?> build(String targetPostDocumentId) async { // <- now I am able to initialize it with parameter
    return _fetchPostUseCase(targetPostDocumentId);
  }

  Future<Post> fetchTargetPost(String targetPostDocumentId) async { // However, I can't execute this member method from UI.
    state = const AsyncValue.loading();
    Post post = Post.empty();
    state = await AsyncValue.guard( () async {
      post = await _fetchPostUseCase(targetPostDocumentId);
      return post;
    });
    return post;
  }
}
flutter dart riverpod
1个回答
0
投票

postViewModel.notifier
应该是
postViewModel(familykey).notifier
。也就是说,由于您有一系列提供者,因此您必须确定您想要通知程序的提供者。

© www.soinside.com 2019 - 2024. All rights reserved.