bloomBUILD•SHIP•BLOOM
.md
Zero-Friction Adoption

Migration Guide

How to incrementally migrate existing Flutter projects to Bloom without full rewrites.

Migrating from Riverpod

Replace StateNotifierProvider and ConsumerWidget with simple BloomController and Watch wrappers:

Riverpod vs Bloom Comparison
dart
// BEFORE (Riverpod StateNotifier + ConsumerWidget)
final counterProvider = StateNotifierProvider<CounterNotifier, int>((ref) => CounterNotifier());

class CounterWidget extends ConsumerWidget {
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final count = ref.watch(counterProvider);
    return Text('$count');
  }
}

// AFTER (Bloom Controller + Signal + Watch)
class CounterController extends BloomController {
  late final count = createSignal<int>(0);
}

class CounterWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final controller = inject<CounterController>();
    return Watch((context) => Text('${controller.count.value}'));
  }
}