Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Equivalent of ChangeNotifierProvider widget in Riverpod

Is there a widget equivalent of the ChangeNotifierProvider widget of Provider in Riverpod?

The use case is to create a provider only when a page whose parent widget is ChangeNotifierProvider/or a page that has ChangeNotifierProvider in its widget tree has been pushed unto the Navigator stack using create. I would like the provider to be automatically disposed when the page is popped and the ChangeNotifierProvider widget is removed from the widget tree just like in Provider.

like image 254
Prince Avatar asked Oct 14 '25 22:10

Prince


1 Answers

Riverpod has a ChangeNotifierProvider too, so you can use that.

As for the "I would like the provider to be automatically disposed when the page is popped", this functionality is instead implemented using autoDispose

So in the end, the syntax would be:

class MyNotifier extends ChangeNotifier {}

final myNotifierProvider = ChangeNotifierProvider.autoDispose<MyNotifier>((ref) {
  return MyNotifier();
});

...

class MyWidget extends ConsumerWidget {
  @override
  Widget build(BuildContext context, ScopedReader watch) {
    MyNotifier myNotifier = watch(myNotifierProvider);
  }
}

With this, when all the widgets using MyNotifier are destroyed (aka when the route is popped), then MyNotifier will be disposed.

like image 57
Rémi Rousselet Avatar answered Oct 19 '25 17:10

Rémi Rousselet



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!