Skip to main content

Riverpod logoRiverpod

A Reactive State-Management and Dependency Injection framework

Create a provider

[object Object]

Consume the provider

[object Object]
[object Object]

Compile safe

No more ProviderNotFoundException or forgetting to handle loading states. Using Riverpod, if your code compiles, it works.

[object Object]

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, ...

[object Object]

Doesn't depend on Flutter

Create/share/tests providers, with no dependency on Flutter. This includes being able to listen to providers without a BuildContext.

Declare shared state from anywhere

No need to jump between your main.dart and your UI files anymore.

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.

Declare your providers anywhere
Combining providers

Recompute states/rebuild UI only when needed

We no-longer have to sort/filter lists inside the build method or have to resort to advanced cache mechanism.

With Provider and "families", sort your lists or do HTTP requests only when you truly need it.

Safely read providers

Reading 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.
Asynchronously loaded providers
Devtool support

Inspect your state in the devtool

Using Riverpod, your state is visible out of the box inside Flutter's devtool.
Futhermore, a full-blown state-inspector is in progress.