INDEX / JOURNAL / LOG-017
VOL. 2026 · ENGINEERING
SERIES 2 / 4
LOG-017 · NOTIFIER AND INVALIDATE

状態を更新する側と作り直す仕組み

PUBLISHED
2026 · 10 · 02
AUTHOR
MIGIWAYA
READ
約 6 分
TAGS
#flutter#dart#riverpod

§ 01NOTIFIER

lib/providers/counter_provider.dartDART
final counterProvider = NotifierProvider<Counter, int>(Counter.new);
 
class Counter extends Notifier<int> {
@override
int build() => 0;
 
void increment() {
state = state + 1;
}
 
void reset() {
state = 0;
}
}

§ 02ASYNC

lib/providers/messages_provider.dartDART
final messagesProvider =
AsyncNotifierProvider<Messages, List<Message>>(Messages.new);
 
class Messages extends AsyncNotifier<List<Message>> {
@override
FutureOr<List<Message>> build() => fetchMessages();
 
Future<void> add(Message message) async {
state = const AsyncValue.loading();
state = await AsyncValue.guard(() async {
await saveMessage(message);
return fetchMessages();
});
}
}

§ 03DEPENDENCY

lib/providers/items_provider.dartDART
final categoryProvider =
NotifierProvider<Category, String>(Category.new);
 
final itemsProvider = FutureProvider<List<Item>>((ref) async {
final category = ref.watch(categoryProvider);
return fetchItems(category);
});

§ 04RECOMPUTE

lib/widgets/items_page.dartDART
Future<void> reload(WidgetRef ref) async {
await ref.refresh(itemsProvider.future);
}
 
void clearCache(WidgetRef ref) {
ref.invalidate(itemsProvider);
}

§ 05LIFETIME

lib/providers/item_provider.dartDART
final itemProvider = Provider<Item>(
(ref) => loadItem(),
isAutoDispose: true,
);

§ 06FAMILY

lib/providers/item_counter_provider.dartDART
final itemCounterProvider =
NotifierProvider.family<ItemCounter, int, String>(ItemCounter.new);
 
class ItemCounter extends Notifier<int> {
ItemCounter(this.itemId);
 
final String itemId;
 
@override
int build() => 0;
 
void increment() {
state = state + 1;
}
}

§ 07RIVERPOD-3

Riverpod 2 以前で見かける形Riverpod 3 で読む形
Provider + 自動破棄の設定
Notifier + 自動破棄の設定
引数をコンストラクタで受ける Notifier
引数をコンストラクタで受ける AsyncNotifier
AsyncValue.value

§ 08SUMMARY

脚注 · NOTES
  1. [1] ↩
  2. [2] ↩
同シリーズ · Riverpod と依存性注入
§ + RELATED すべて見る →
INQUIRY
CONTACT
LOCATION
STATUS
Active / Open
ESTABLISHED
2024 · 5 · 5
FORM