flutter-expert
skill:flutter-expert — Cross-Platform Mobile Development with Flutter/Dart
Version: 1.0.0
Purpose
Build and architect high-quality cross-platform mobile applications with Flutter and Dart. This skill covers widget composition, state management selection (Riverpod, Bloc, Provider, GetX), navigation patterns (GoRouter, auto_route), platform channel integration, performance optimization, and comprehensive testing strategies. Use when building new Flutter apps, reviewing Flutter code, or migrating between state management solutions.
File Structure
skills/flutter-expert/
├── SKILL.md (this file)
└── examples.md
Interface References
- Context: Loaded via ContextProvider Interface
- Memory: Accessed via MemoryStore Interface
- Shared Patterns: Shared Loading Patterns
- Schemas: Validated against context_metadata.schema.json and memory_entry.schema.json
Mandatory Workflow
IMPORTANT: Execute ALL steps in order. Do not skip any step.
Step 1: Initial Analysis
- Gather inputs: target platforms (iOS, Android, Web, Desktop), project type, existing codebase
- Detect Flutter version and Dart SDK version
- Identify state management solution (Riverpod, Bloc/Cubit, Provider, GetX, signals)
- Identify navigation approach (GoRouter, auto_route, Navigator 2.0)
- Detect dependency injection (get_it, injectable, riverpod)
- Determine project structure (feature-first, layer-first, clean architecture)
- Identify project name for memory lookup
Step 2: Load Memory
Follow Standard Memory Loading with
skill="flutter-expert"anddomain="engineering".
Load per-project memory files if they exist:
project_overview.md— Flutter/Dart versions, target platforms, key packageswidget_patterns.md— Established widget composition and reuse patternsstate_management.md— State management approach and conventionsplatform_integrations.md— Platform channel usage and native integrations
Step 3: Load Context
Follow Standard Context Loading for the
engineeringdomain. Stay within the file budget declared in frontmatter.
Step 4: Flutter Development Core
Apply expert-level Flutter/Dart guidance across these dimensions:
-
Widget Architecture
- Composition over inheritance
- Stateless vs StatefulWidget selection criteria
- Custom RenderObject for performance-critical widgets
- Widget key management (ValueKey, ObjectKey, GlobalKey)
- BuildContext usage and InheritedWidget patterns
- Sliver-based scrolling for complex layouts
-
State Management
- Riverpod: Provider types (Provider, StateProvider, FutureProvider, StreamProvider, NotifierProvider), family/autoDispose modifiers, ref patterns
- Bloc/Cubit: Event-driven patterns, BlocObserver, multi-repository patterns, Bloc-to-Bloc communication
- Provider: ChangeNotifier patterns, ProxyProvider, multi-provider setup
- Selection guidance based on project complexity and team experience
-
Navigation & Routing
- GoRouter declarative routing, ShellRoute for nested navigation
- Deep linking configuration (iOS Universal Links, Android App Links)
- Route guards and redirect logic
- Navigation state restoration
-
Platform Integration
- MethodChannel/EventChannel for native communication
- Pigeon for type-safe platform channels
- Platform-specific UI adaptation (Cupertino vs Material)
- FFI for direct native library calls
- Plugin development patterns
-
Performance Optimization
- Widget rebuild minimization (const constructors, selective rebuilds)
- Image caching and optimization (cached_network_image)
- List performance (ListView.builder, SliverList)
- Isolate usage for heavy computation
- DevTools profiling and performance overlay
- Shader compilation jank mitigation
-
Testing Strategy
- Widget testing with WidgetTester
- Golden (snapshot) testing
- Integration testing with patrol or integration_test
- Mocking with mocktail/mockito
- State management testing (Bloc test, Riverpod testing)
-
Project Structure
- Feature-first vs layer-first organization
- Clean Architecture implementation
- Monorepo with Melos
- Code generation (freezed, json_serializable, build_runner)
Step 5: Generate Output
- Save output to
/claudedocs/flutter-expert_{project}_{YYYY-MM-DD}.md - Follow naming conventions in
../OUTPUT_CONVENTIONS.md
Step 6: Update Memory
Follow Standard Memory Update for
skill="flutter-expert". Store any newly learned patterns, conventions, or project insights.
Update per-project memory:
- project_overview.md: Flutter/Dart versions, packages, target platforms
- widget_patterns.md: Custom widgets, composition patterns established
- state_management.md: Chosen approach, conventions, patterns
- platform_integrations.md: Native integrations, platform channels documented
Compliance Checklist
Before completing, verify:
- All mandatory workflow steps executed in order
- Standard Memory Loading pattern followed (Step 2)
- Standard Context Loading pattern followed (Step 3)
- Flutter/Dart version and state management detected (Step 1)
- Output saved with standard naming convention
- Standard Memory Update pattern followed (Step 6)
Version History
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-02-12 | Initial release — Flutter/Dart cross-platform development |