flutter-riverpodlisted
Install: claude install-skill noory-code/noory-ai
# Flutter Riverpod
Code-generation-based state management using riverpod_generator.
---
## Installation
```bash
# required
flutter pub add flutter_riverpod
flutter pub add riverpod_annotation
flutter pub add dev:riverpod_generator
flutter pub add dev:build_runner
```
## Code Generation
```bash
# one-time build
dart run build_runner build --delete-conflicting-outputs
# watch mode
dart run build_runner watch -d
```
---
## Quick Reference
```dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'example.g.dart';
// simple Provider (function)
@riverpod
String helloWorld(Ref ref) => 'Hello world';
// Notifier (class-based, state can be changed)
@riverpod
class Counter extends _$Counter {
@override
int build() => 0;
void increment() => state++;
void decrement() => state--;
}
// AsyncNotifier (async)
@riverpod
class TodoList extends _$TodoList {
@override
Future<List<Todo>> build() async {
return await fetchTodos();
}
Future<void> addTodo(Todo todo) async {
state = const AsyncLoading();
state = await AsyncValue.guard(() async {
await saveTodo(todo);
return [...state.value ?? [], todo];
});
}
}
```
### Widget Usage
```dart
void main() {
runApp(ProviderScope(child: MyApp()));
}
class MyPage extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final count = ref.watch(counterProvider);
return TextBut