flutter_state_migrator 2.3.1
flutter_state_migrator: ^2.3.1 copied to clipboard
Automated CLI tool to migrate Flutter apps from Provider, BLoC, GetX, and MobX to Riverpod.
example/lib/main.dart
// Example: before-and-after migration from Provider to Riverpod.
//
// Run `dart pub global activate flutter_state_migrator` then:
// migrator --mode aggressive --dry-run .
// to preview the automated transformation of this file.
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// ── Riverpod notifier (post-migration) ──────────────────────────────────────
class Counter extends StateNotifier<int> {
Counter() : super(0);
void increment() => state++;
}
final counterProvider = StateNotifierProvider<Counter, int>((ref) => Counter());
// ── App ──────────────────────────────────────────────────────────────────────
void main() {
runApp(const ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter State Migrator Example',
theme: ThemeData(primarySwatch: Colors.blue),
home: const CounterScreen(),
);
}
}
class CounterScreen extends ConsumerWidget {
const CounterScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final count = ref.watch(counterProvider);
return Scaffold(
appBar: AppBar(title: const Text('Counter (Riverpod)')),
body: Center(
child: Text(
'Count: $count',
style: Theme.of(context).textTheme.headlineMedium,
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => ref.read(counterProvider.notifier).increment(),
child: const Icon(Icons.add),
),
);
}
}