Шаблон Flutter проекта с Clean Architecture, Feature-first организацией и flutter_bloc для управления состоянием.
Проект следует принципам Clean Architecture с организацией по фичам (Feature-first):
lib/
├── core/ # Общий код
│ ├── error/ # Обработка ошибок, failures
│ ├── network/ # Утилиты сети, interceptors
│ ├── utils/ # Утилиты и расширения
│ └── widgets/ # Переиспользуемые виджеты
├── features/ # Все фичи приложения
│ ├── example_feature/ # Пример фичи
│ │ ├── data/ # Слой данных
│ │ │ ├── datasources/ # Удаленные и локальные источники данных
│ │ │ ├── models/ # DTOs и модели данных
│ │ │ └── repositories/ # Реализации репозиториев
│ │ ├── domain/ # Слой домена
│ │ │ ├── entities/ # Бизнес-объекты
│ │ │ ├── repositories/ # Интерфейсы репозиториев
│ │ │ └── usecases/ # Use cases бизнес-логики
│ │ └── presentation/ # Слой представления
│ │ ├── bloc/ # Bloc/Cubit для управления состоянием
│ │ ├── pages/ # Экраны
│ │ └── widgets/ # Виджеты фичи
└── main.dart # Точка входа
- flutter_bloc - Управление состоянием
- go_router - Навигация
- easy_localization - Локализация
- pull_to_refresh - Pull-to-refresh
- flutter_local_notifications / firebase_messaging - Уведомления
- get_it - Dependency Injection
- dartz - Функциональная обработка ошибок
- dio - HTTP клиент
- freezed - Неизменяемые классы и union types
- Установите зависимости:
flutter pub get- Сгенерируйте код (для freezed и других code generators):
flutter pub run build_runner build --delete-conflicting-outputs-
Настройте Firebase (опционально, если используете уведомления):
- Добавьте
google-services.jsonдля Android вandroid/app/ - Добавьте
GoogleService-Info.plistдля iOS вios/Runner/
- Добавьте
-
Запустите приложение:
flutter run- После установки зависимостей (
flutter pub get) необходимо запуститьbuild_runnerдля генерации freezed файлов - Для работы уведомлений требуется настройка Firebase (опционально)
- Локализация настроена для английского и русского языков, файлы находятся в
assets/translations/
Общий код, используемый во всем приложении:
- error/ - Классы ошибок и failures
- network/ - Настройка сети, interceptors
- utils/ - Утилиты и расширения
- widgets/ - Переиспользуемые виджеты
Каждая фича содержит три слоя:
- data/ - Реализация источников данных и репозиториев
- domain/ - Бизнес-логика, entities, use cases
- presentation/ - UI, bloc, страницы
См. lib/core/router/app_router.dart
Файлы переводов находятся в assets/translations/
См. пример в features/example_feature/presentation/pages/example_page.dart
См. core/notifications/notification_service.dart
См. пример в features/example_feature/presentation/bloc/example_bloc.dart