Skip to content
Back to skills

Flutter Layer Based Clean Architecture

ASecurity

Enforce inward dependency flow, pure domain layers, and DTO-to-entity mapping in Flutter DDD architecture. Use when structuring domain, infrastructure, application, or presentation layers.

  • 549 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added June 6, 2026
development

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned June 6, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill flutter-layer-based-clean-architecture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Flutter Layer Based Clean Architecture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Flutter Layer Based Clean Architecture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-flutter-layer-based-clean-architecture/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-flutter-layer-based-clean-architecture)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: flutter-layer-based-clean-architecture
description: Enforce inward dependency flow, pure domain layers, and DTO-to-entity mapping in Flutter DDD architecture. Use when structuring domain, infrastructure, application, or presentation layers.
metadata:
  triggers:
    files:
    - 'lib/domain/**'
    - 'lib/infrastructure/**'
    - 'lib/application/**'
    keywords:
    - dto
    - mapper
    - Either
    - Failure
---
# Layer-Based Clean Architecture

## **Priority: P0 (CRITICAL)**


## Workflow: Add New Feature Across Layers

1. Define domain entity with `@freezed` in `lib/domain/entities/`
2. Define repository interface in `lib/domain/repositories/`
3. Create DTO in `lib/infrastructure/dtos/` with `fromJson`/`toEntity` mapper
4. Implement repository in `lib/infrastructure/repositories/`
5. Wire BLoC/Cubit in `lib/application/` consuming repository interface
6. Register bindings in `get_it` injection container
7. Build screen in `lib/presentation/` using `BlocBuilder`

## Structure

```text
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; not leak DTOs to UI.

See [DTO-to-Entity mapping example](references/REFERENCE.md).

- **Immutability**: Use `@freezed` for all entities and failures.
- **Logic Placement**: No business logic in UI; widgets only display state and emit events.
- **Inversion of Control**: Use `get_it` to inject repository implementations into BLoCs.

## Anti-Patterns

- **No DTOs in UI**: Never import `.g.dart` or Data class directly in Widget.
- **No Material in Domain**: not import `package:flutter/material.dart` in `domain` layer.
- **No Shared Prefs in Repo**: not use `shared_preferences` directly in Repository; use Data Source.

## Reference & Examples

For full implementation templates and DTO-to-Domain mapping examples:
See [references/REFERENCE.md](references/REFERENCE.md).

## References

- feature-based-clean-architecture | bloc-state-management | dependency-injection | error-handling

Files in this skill

  • SKILL.md2.5 KB
  • evals/evals.json2 KB
  • references/REFERENCE.md1.6 KB
  • references/repository-mapping.md1.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.