flutter-riverpod-state-management
Reactive state management using Riverpod 2.0 with code generation.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Riverpod State Management
Priority: P0 (CRITICAL)
Type-safe, compile-time safe reactive state management using riverpod and riverpod_generator.
Structure
lib/
├── providers/ # Global providers and services
└── features/user/
├── providers/ # Feature-specific providers
└── models/ # @freezed domain models
Implementation Guidelines
-
Generator First: Use
@riverpodannotations andriverpod_generator. Avoid manualProviderdefinitions. -
Immutability: Maintain immutable states. Use
Freezedfor all state models. -
Provider Methods:
-
ref.watch(): Use insidebuild()to rebuild on changes. -
ref.listen(): Use for side-effects (navigation, dialogs). -
ref.read(): Use ONLY in callbacks (onPressed).
-
-
Asynchronous Data: Use
AsyncNotifierfor complex async logic. Access data via.when()orAsyncValuepattern-matching. - Architecture: Enforce 3-layer separation (Data, Domain, Presentation).
-
Linting: Enable
riverpod_lintandcustom_lintfor dependency cycle detection.
Anti-Patterns
- Building Inside Providers: Don't perform side-effects inside provider initialization.
-
Context Access: Never pass
BuildContextinto a Notifier/Provider. - Dynamic Providers: Avoid local provider instantiation; keep them global.
Related Topics
layer-based-clean-architecture | dependency-injection | testing
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!