Minimal reproducible code:
final fooProvider = StateProvider<int>((ref) => 0);
final barProvider = Provider<String>((ref) {
ref.watch(fooProvider); // 1
return '';
});
class FooPage extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
body: BarPage(),
floatingActionButton: FloatingActionButton(
onPressed: () => ref.read(fooProvider.notifier).state++, // 2
),
);
}
}
class BarPage extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
print('build(BarPage)'); // 3
final string = ref.watch(barProvider); // 4
return Text(string);
}
}
1: barProvider
is watching fooProvider
.
2: I am changing fooProvider
state.
4: I am watching barProvider
(which itself is watching fooProvider
, see 1)
3: This should have printed but it didn't.