Flutter
Интеграция с Flutter
Размещение Presenter в дереве виджетов со стабильной идентичностью, актуальным BuildContext, явными эффектами и бизнес-источниками под управлением приложения.
Интеграция с Flutter
ark_mvp_flutter соединяет независимые от фреймворка контракты с Flutter через MvpView, FlutterPresenter и MvpModelProvider.
dependencies:
ark_mvp: ^1.1.0
ark_mvp_flutter: ^1.1.0
Укажите базовый пакет как прямую зависимость, если код приложения импортирует ModelBinding, Presenter или другой тип ark_mvp.
Карта ответственности
| Объект | Кто создаёт | Что читает | Чем владеет |
|---|---|---|---|
| Бизнес-источник | Композиция приложения или функции | Доменные зависимости | Собственные ресурсы и состояние |
ModelBinding | Та же граница композиции | Текущие бизнес-снимки и Stream изменений | Не владеет бизнес-объектом |
| Presenter | MvpView через createPresenter | Текущую Model и активный BuildContext во время адаптации | Локальные ресурсы представления |
| ViewState | Presenter | Ничего после создания | Не владеет ресурсами |
| View | Flutter | ViewState и действия Presenter | Локальные Flutter-объекты в собственном State |
Карта предотвращает две распространённые ошибки: создание бизнес-объекта внутри Presenter и перенос форматирования или политики кнопок обратно во View.
Поток выполнения
MvpViewполучает явно переданный ModelBinding или ближайшийMvpModelProviderточного типа.- До первого чтения он подписывается на все источники изменений Model.
- Затем читает начальную Model, создаёт Presenter, подписывается на выходные события и запускает сессию.
- Сигнал Model, обновление Presenter или изменение унаследованного окружения приводит к новому ViewState.
- Эффект один раз поступает в
onEffect(context, effect). - Удаление или замена функции закрывает Presenter.
Точный порядок идентификации, обработки ошибок и завершения описан на следующих страницах раздела.
Передавайте model напрямую, если владелец и MvpView расположены рядом в дереве. Используйте MvpModelProvider.value, когда несколько потомков используют один стабильный ModelBinding или экран должен получить его по точному типу Model. Оба способа создают одинаковый жизненный цикл Presenter.