ProviderNotFoundException or forgetting to handle loading
states. Using Riverpod, if your code compiles, it works.
Provider, without its limitations
Riverpod is inspired by Provider but solves some of it's key issues such as supporting multiple providers of the same type; awaiting asynchronous providers; adding providers from anywhere, ...
Doesn't depend on Flutter
Create/share/tests providers, with no dependency on Flutter. This
includes being able to listen to providers without a
Declare shared state from anywhere
No need to jump between your
main.dart and your UI files
Place the code of your shared state where it belongs, be it in a separate package or right next to the Widget that needs it, without losing testability.
Safely read providersReading a provider will never result in a bad state. If you can write the code needed to read a provider, you will obtain a valid value.
This even applies to asynchronously loaded values. As opposed to with provider, Riverpod allows cleanly handling loading/error cases.
Inspect your state in the devtoolUsing Riverpod, your state is visible out of the box inside Flutter's devtool.
Futhermore, a full-blown state-inspector is in progress.