При разработке мобильного приложения на Flutter с использованием чистой архитектуры (clean architecture), важно выбирать библиотеки для управления состоянием, которые хорошо сочетаются с разделением ответственности и поддерживают модульность. Вот несколько популярных библиотек для стейт-менеджмента, которые хорошо вписываются в принципы чистой архитектуры:
-
flutter_riverpod:
- Поддерживает функциональный стиль программирования и является современным аналогом библиотеки
provider
. - Идеально подходит для чистой архитектуры, так как позволяет управлять состоянием независимо от UI.
- Поддерживает инъекцию зависимостей и асинхронные операции, что облегчает управление слоями (например, домена, данных и презентации).
Пример интеграции можно прочитать в статье.
- Поддерживает функциональный стиль программирования и является современным аналогом библиотеки
-
bloc/cubit (flutter_bloc):
- Одна из самых популярных библиотек для управления состоянием в Flutter.
- Она отделяет бизнес-логику и состояние от UI, что отлично соответствует принципам чистой архитектуры.
- Построена на основе паттерна событий и состояний, обеспечивая предсказуемое управление состоянием.
Пример интеграции можно прочитать в статье.
-
provider:
- Широко используемая библиотека, которая предоставляет простой и эффективный способ инъекции зависимостей и управления состоянием.
- Хотя сама по себе
provider
не так мощна, как Riverpod или Bloc, она может быть расширена с помощьюChangeNotifier
илиValueNotifier
, чтобы работать в рамках чистой архитектуры.
Пример интеграции можно прочитать в статье.
-
get_it + injectable:
get_it
— это сервис-локатор для инъекции зависимостей, который можно использовать с любыми подходами к управлению состоянием.- В чистой архитектуре его удобно использовать для инъекции зависимостей между слоями домена, данных и презентации.
- В сочетании с
injectable
можно автоматизировать генерацию DI-кода для удобства.
-
states_rebuilder:
- Еще одна библиотека для управления состоянием, которая поддерживает чистую архитектуру.
- Обеспечивает гибкость и отделение UI от бизнес-логики, что соответствует принципам чистой архитектуры.
-
mobx:
- Реактивная библиотека для управления состоянием, которая предоставляет простой способ работы с состояниями.
- MobX может быть полезен, если нужен более реактивный подход к управлению состоянием в рамках чистой архитектуры.
Пример интеграции можно прочитать в статье.
Как выбрать?
- Если тебе нужен гибкий, современный и легкий в использовании инструмент для управления состоянием, который также поддерживает асинхронность и инъекцию зависимостей, flutter_riverpod — отличный выбор.
- Для более строгого подхода с разделением бизнес-логики через события и состояния стоит рассмотреть bloc.
- provider подходит для простых или небольших приложений, хотя для масштабирования его лучше комбинировать с другими библиотеками.
Более подробно рассмотрим популярные библиотеки в отдельных статьях.
Посмотреть подходящие вакансии для Flutter-разработчика можно тут!