refena_riverpod_extension 1.0.1
refena_riverpod_extension: ^1.0.1 copied to clipboard
Provides extension getters to use Riverpod and Refena at the same time. Makes migration from Riverpod to Refena easier.

Provides extension getters to use Riverpod and Refena at the same time.
Checkout Refena for Riverpod developers for more information.
// Riverpod -> Refena
ref.refena.read(myRefenaProvider);
// Refena -> Riverpod
ref.riverpod.read(myRiverpodProvider);
copied to clipboard
Usage #
➤ Setup #
Add the following dependencies to your pubspec.yaml
:
# pubspec.yaml
dependencies:
flutter_riverpod: <version>
refena_flutter: <version>
refena_riverpod_extension: <version>
copied to clipboard
Wrap your app with RefenaRiverpodExtension
(below RefenaScope
and ProviderScope
):
void main() {
runApp(
ProviderScope(
child: RefenaScope(
child: RefenaRiverpodExtension(
child: MyApp(),
),
),
),
);
}
copied to clipboard
➤ Access Riverpod from Refena #
Let's say you have a StateProvider
written in Riverpod:
final riverpodCounterProvider = StateProvider((ref) => 0);
copied to clipboard
Then you can access it from Refena by using the Ref.riverpod
getter:
final refenaProvider = ViewProvider((ref) {
// This is reactive!
// The refenaProvider will be rebuilt when the riverpodCounterProvider changes.
final counter = ref.riverpod.watch(riverpodCounterProvider);
return counter.state;
});
copied to clipboard
➤ Access Refena from Riverpod #
Let's say you have a ReduxProvider
written in Refena:
final counterProvider = ReduxProvider<Counter, int>((ref) => Counter());
class Counter extends ReduxNotifier<int> {
@override
int init() => 10;
}
class AddAction extends ReduxAction<Counter, int> {
final int amount;
AddAction(this.amount);
@override
int reduce() => state + amount;
}
copied to clipboard
Then you can access it by using the Ref.refena
getter:
final riverpodProvider = Provider((ref) {
// There is no reactive way to access Refena from Riverpod.
return ref.refena.read(counterProvider);
});
final riverpodProvider2 = NotifierProvider<RiverpodCounter, int>(() {
return RiverpodCounter();
});
class RiverpodCounter extends Notifier<int> {
@override
int build() => 0;
void dispatch(int amount) {
// We can dispatch actions to Refena from Riverpod.
ref.refena.redux(counterProvider).dispatch(AddAction(amount));
}
}
copied to clipboard