0
0

【riverpod】 .familyをinvalidateする時

Posted at
final messageProvider = Provider.family<Message, String>((ref, messageId) {
  final message = ref
      .read(messageRepositoryProvider)
      .fetchByMessageId(messageId: messageId);

  return message;
});

.familyとするとProviderで引数を使用することができ、memoIdごとのProviderが作成されます。
一度初期化メソッドが呼び出されると取得した値がキャッシュされ、それ以降の呼び出しではキャッシュされた値が提供されますが、再度値を取得し直したいタイミングがあるかと思います。


ref.invalidate(messageProvider);

.invalidateするとproviderを初期化することができますが、すべてのmessageProviderが初期化されてしまいます。
特定のmessageIdを持つProviderのみ初期化したいときは

ref.invalidate(memoId);

としてあげると、他のProviderを初期化することなく特定のProviderのみ初期化することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0