rivertion 4.2.0 copy "rivertion: ^4.2.0" to clipboard
rivertion: ^4.2.0 copied to clipboard

A Flutter state management library that bridges the gap between traditional state holders and a modern, reactive consumption model.

example/main.dart

import 'package:bloc/bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_riverpod/legacy.dart';

import '../tool/templates/bloc_source.dart';
import '../tool/templates/riverpod_source_consumer.dart';

// A Riverpod provider.
final riverpodCounterProvider = StateProvider((ref) => 0);

// A Cubit for state management.
class CounterCubit extends Cubit<int> {
  CounterCubit() : super(0);

  void increment() => emit(state + 1);
}

void main() {
  final counterCubit = CounterCubit();

  runApp(ProviderScope(child: MyApp(counterCubit: counterCubit)));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key, required this.counterCubit});

  final CounterCubit counterCubit;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Rivertion Example')),
        body: Center(
          child: SourceConsumer(
            builder: (context, ref, _) {
              // Watch the Cubit's state using the .source extension.
              final cubitCount = ref.watchSource(counterCubit.source);

              // Watch the Riverpod provider.
              final riverpodCount = ref.watch(riverpodCounterProvider);

              return Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  const Text('Cubit value:'),
                  Text('$cubitCount', style: Theme.of(context).textTheme.headlineMedium),
                  const SizedBox(height: 20),
                  const Text('Riverpod value:'),
                  Text('$riverpodCount', style: Theme.of(context).textTheme.headlineMedium),
                ],
              );
            },
          ),
        ),
        floatingActionButton: Column(
          mainAxisAlignment: MainAxisAlignment.end,
          children: [
            FloatingActionButton(
              onPressed: () {
                // Increment the Cubit's state.
                counterCubit.increment();
              },
              child: const Icon(Icons.add),
            ),
            const SizedBox(height: 10),
            Consumer(
              builder: (context, ref, _) {
                return FloatingActionButton(
                  onPressed: () {
                    // Increment the Riverpod provider's state.
                    ref.read(riverpodCounterProvider.notifier).state++;
                  },
                  child: const Icon(Icons.add),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}
1
likes
150
points
125
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter state management library that bridges the gap between traditional state holders and a modern, reactive consumption model.

Documentation

API reference

License

MIT (license)

Dependencies

args, flutter, meta

More

Packages that depend on rivertion