import 'package:riverpod/riverpod.dart'; void main() { final container = ProviderContainer(); container.listen(counter, (prev, value) { print('count: ${value.count}'); }, fireImmediately: true); container.read(counter).increment(); } class Counter { Counter({required this.count, required this.increment}); final int count; final void Function() increment; Counter copyWith({int? count}) { return Counter(count: count ?? this.count, increment: increment); } } final counter = Provider((ref) { return Counter( count: 0, increment: () { ref.state = ref.state.copyWith(count: ref.state.count + 1); }, ); });