В архитектуре Flutter-приложений существует несколько популярных подходов их можно посерфить в интернете или пообщаться с единомышленниками, а так же посмотреть блогеров(к примеру Стас Ильин - много рассказывает про флаттер разработку и свою концепцию архитектуры, как он привык это видеть в продакшене), каждый из которых имеет свою структуру папок и файлов. Вот несколько распространенных архитектур:
1. Vanilla Architecture. Классическая структура Эта архитектура подходит для небольших проектов и простых приложений.
- main.dart: Входная точка приложения.
- screens: Содержит файлы экранов.
- widgets: Компоненты и виджеты, которые могут использоваться повторно.
- models: Классы моделей данных.
- services: Файлы, отвечающие за связь с внешними сервисами (например, API).
2. Feature-first Architecture Эта архитектура группирует файлы по функциональным блокам. Подходит для средних и крупных приложений.
- features: Каждый подкаталог отвечает за отдельную функциональность приложения (например, аутентификация, управление продуктами).
- data, presentation, services: Содержат соответствующие файлы данных, экраны и сервисы для отдельных фич.
3. BLoC Architecture (Business Logic Component) Эта архитектура разделяет бизнес-логику и представление. Подходит для крупных и сложных приложений.
- blocs: Файлы, содержащие логику бизнеса (BLoC-контроллеры).
- repositories: Репозитории для работы с данными.
- models, screens, widgets, services: Имеют аналогичную роль, как в предыдущих архитектурах.
4. Clean Architecture Эта архитектура делает упор на разделение ответственности на уровне данных, домена и представления.
- data: Содержит модели, репозитории и сервисы для работы с данными.
- domain: Содержит сущности, репозитории и usecases (пользовательские кейсы) для бизнес-логики.
- presentation: Содержит BLoC-ы, экраны и виджеты для представления данных.
Из выше описанных архитектур, к нашему приложению подходит Feature-first, BLoC или Clean Architecture, а может быть у вас имеется своё видение, то пишите в комментариях.
А на текущем этапе у меня пока такая(ниже архитектура) , чем-то похожая на BLoC архитектуру.
- assets: Содержит изображения
- constants: Содержит константы
- routes: Содержит адреса и переходы между экранами
- screens: Содержит экраны и фичи
- services: Содержит данные и подключение к Api
Выбор архитектуры для Flutter-приложения является критическим шагом, который влияет на весь последующий процесс разработки и поддержки. Необходимо учитывать размер и сложность приложения, потребность в тестировании, а также личные предпочтения и опыт который у меня имеется только с веб. Тщательно рассмотрев все эти аспекты, мне предстоит выбрать архитектуру, которая наилучшим образом подходит для нашего приложения AutoMaintEase.
Спасибо за внимание, а так же добро пожаловать, буду рад видеть тебя у себя в комментариях.
А так же если кому интересно, как я начал свой путь разработчика, то расскажу в следующих статьях, но если в кратце, то изначально обучался в GeekBrains, переходи там от меня до 45% скидка на обучение.
Сайт: AutoMaintEase
Телеграм канал: AutoMaintEase