Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save aoisensi/203982d96f81d7e35fe9ded10e821edd to your computer and use it in GitHub Desktop.
Save aoisensi/203982d96f81d7e35fe9ded10e821edd to your computer and use it in GitHub Desktop.
import 'package:flutter_riverpod/flutter_riverpod.dart';
class Item {
final String name;
final int price;
Item(this.name, this.price);
}
final inventoryProvider =
NotifierProvider<InventoryNotifier, List<Item>>(InventoryNotifier.new);
final itemProvider =
NotifierProvider.family<ItemNotifier, Item, int>(ItemNotifier.new);
class InventoryNotifier extends Notifier<List<Item>> {
@override
List<Item> build() {
return [
Item('Apple', 10),
Item('Banana', 20),
Item('Cherry', 30),
];
}
updateItem(int index, Item item) {
final s = [...state];
s[index] = item;
state = s;
}
}
class ItemNotifier extends FamilyNotifier<Item, int> {
@override
Item build(int arg) {
return ref.watch(inventoryProvider)[arg];
}
void incrementPrice() {
ref
.read(inventoryProvider.notifier)
.updateItem(arg, Item(state.name, state.price + 1));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment