flutter-layer-based-clean-architecture-ddd
Standards for separation of concerns, layer dependency rules, and DDD in Flutter.
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
Layer-Based Clean Architecture
Priority: P0 (CRITICAL)
Standardized separation of concerns and dependency flow using DDD principles.
Structure
lib/
├── domain/ # Pure Dart: entities (@freezed), failures, repository interfaces
├── infrastructure/ # Implementation: DTOs, data sources, mappers, repo impls
├── application/ # Orchestration: BLoCs / Cubits
└── presentation/ # UI: Screens, reusable components
Implementation Guidelines
-
Dependency Flow:
Presentation -> Application -> Domain <- Infrastructure. Dependencies point inward. -
Pure Domain: No Flutter (Material/Store) or Infrastructure (Dio/Hive) dependencies in
Domain. -
Functional Error Handling: Repositories must return
Either<Failure, Success>. - Always Map: Infrastructure must map DTOs to Domain Entities; do not leak DTOs to UI.
-
Immutability: Use
@freezedfor all entities and failures. - Logic Placement: No business logic in UI; widgets only display state and emit events.
-
Inversion of Control: Use
get_itto inject repository implementations into BLoCs.
Anti-Patterns
-
No DTOs in UI: Never import a
.g.dartor Data class directly in a Widget. -
No Material in Domain: Do not import
package:flutter/material.dartin thedomainlayer. -
No Shared Prefs in Repo: Do not use
shared_preferencesdirectly in a Repository; use a Data Source.
Reference & Examples
For full implementation templates and DTO-to-Domain mapping examples: See references/REFERENCE.md.
Related Topics
feature-based-clean-architecture | bloc-state-management | dependency-injection | error-handling
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!