flutter-architecture

安装量: 1.2K
排名: #1149

安装

npx skills add https://github.com/madteacher/mad-agents-skills --skill flutter-architecture
Flutter Architecture
Overview
Provides architectural guidance and best practices for building scalable Flutter applications using MVVM pattern, layered architecture, and recommended design patterns from the Flutter team.
Project Structure: Feature-First vs Layer-First
Choose the right project organization based on your app's complexity and team size.
Feature-First (Recommended for teams)
Organize code by business features:
lib/
├── features/
│ ├── auth/
│ │ ├── data/
│ │ ├── domain/
│ │ └── presentation/
│ ├── todos/
│ │ ├── data/
│ │ ├── domain/
│ │ └── presentation/
│ └── settings/
│ ├── data/
│ ├── domain/
│ └── presentation/
├── shared/
│ ├── core/
│ ├── data/
│ └── ui/
└── main.dart
When to use:
Medium to large apps (10+ features)
Team development (2+ developers)
Frequently adding/removing features
Complex business logic
Benefits:
Features are self-contained units
Easy to add/remove entire features
Clear feature boundaries
Reduced merge conflicts
Teams work independently on features
See
Feature-First Guide
for complete implementation details.
Layer-First (Traditional)
Organize code by architectural layers:
lib/
├── data/
│ ├── repositories/
│ ├── services/
│ └── models/
├── domain/
│ ├── use-cases/
│ └── entities/
├── presentation/
│ ├── views/
│ └── viewmodels/
└── shared/
When to use:
Small to medium apps
Few features (<10)
Solo developers or small teams
Simple business logic
Benefits:
Clear separation by layer
Easy to find components by type
Less nesting
Quick Start
Start with these core concepts:
Separation of concerns
- Split app into UI and Data layers
MVVM pattern
- Use Views, ViewModels, Repositories, and Services
Single source of truth
- Repositories hold the authoritative data
Unidirectional data flow
- State flows from data → logic → UI
For detailed concepts, see
Concepts
.
Architecture Layers
Flutter apps should be structured in layers:
UI Layer
Views (widgets) and ViewModels (UI logic)
Data Layer
Repositories (SSOT) and Services (data sources) Domain Layer (optional): Use-cases for complex business logic See Layers Guide for detailed layer responsibilities and interactions. Core Components Views Compose widgets for UI presentation Contain minimal logic (animations, simple conditionals, routing) Receive data from ViewModels Pass events via ViewModel commands ViewModels Transform repository data into UI state Manage UI state and commands Handle business logic for UI interactions Expose state as streams or change notifiers Repositories Single source of truth for data types Aggregate data from services Handle caching, error handling, retry logic Expose data as domain models Services Wrap external data sources (APIs, databases, platform APIs) Stateless data access layer One service per data source Design Patterns Common patterns for robust Flutter apps: Command Pattern - Encapsulate actions with Result handling Result Type - Type-safe error handling Repository Pattern - Abstraction over data sources Offline-First - Optimistic UI updates with sync See Design Patterns for implementation details. When to Use This Skill Use this skill when: Designing or refactoring Flutter app architecture Choosing between feature-first and layer-first project structure Implementing MVVM pattern in Flutter Creating scalable app structure for teams Adding new features to existing architecture Applying best practices and design patterns Resources references/ concepts.md - Core architectural principles (separation of concerns, SSOT, UDF) feature-first.md - Feature-first project organization and best practices mvvm.md - MVVM pattern implementation in Flutter layers.md - Detailed layer responsibilities and interactions design-patterns.md - Common patterns and implementations assets/ command.dart - Command pattern template for encapsulating actions result.dart - Result type for safe error handling examples/ - Code examples showing architecture in practice
返回排行榜