Изучение

View, ViewState и ViewEffect

Разделение повторяемых данных отрисовки и одноразовой работы для активного View.

v0.1.0-dev.1Средний уровень

View, ViewState и ViewEffect

Эти три понятия решают разные задачи во времени.

ViewState можно отображать повторно

ViewState содержит всё необходимое для текущего кадра: отформатированный текст, видимые блоки, доступные действия, сообщения валидации, признаки загрузки и устойчивую информацию об ошибках.

Повторная отрисовка одного ViewState должна оставаться корректной. Состояние не считается использованным после перестроения виджета.

View передаёт намерение

View получает ViewState и конкретный API Presenter. Поэтому дочернему виджету передаются обычные значения и обратные вызовы:

dart
ProfileView(
  title: viewState.title,
  isSaving: viewState.isSaving,
  canSave: viewState.canSave,
  onSave: presenter.save,
)

View не видит Model и не ищет исходные бизнес-объекты.

ViewEffect выполняется один раз

Навигация, временное сообщение, фокус, буфер обмена или диалог относятся к ViewEffect. Эффекты не сохраняются и не повторяются для нового View. Для Presenter без эффектов используется тип Never.

Правило для ошибок

Информация, к которой пользователь должен иметь возможность вернуться, хранится в бизнес-состоянии и затем во ViewState. Эффект может дополнительно привлечь внимание, но не должен оставаться единственным свидетельством важной ошибки.

Во Flutter onEffect получает актуальный BuildContext. Работа с деревом выполняется в живом View без сохранения контекста в Presenter.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.