screen_model.md

May 26, 2020 · View on GitHub

Главная

Ридми модуля

ScreenModel

Для хранения состояния экрана используются модели экрана - ScreenModel. Они переживают смену ориентации.

Модель при отрисовке должна полностью переводить вью в необходимое состояние, любой другой механизм для изменения состояния вью использовать запрещено. Разовое отображение SnackBar и другие разовые действия не относятся к состоянию.

Предусмотрены базовые классы ScreenModel, поддерживающие различные состояния, например LoadState (состояние плейсхолдера). Работают в связке с соответствующим базовым классом Вью.

Если какое либо конкретная часть состояния вью выводится из данных ScreenModel, то метод вывода этого состояния должен быть в ScreenModel, например: ScreenModel содержит модель корзины, которая в свою очередь содержит информацию об акциях. Если в зависимости от наличия акций необходимо показывать на UI блок с акциями, то ScreenModel должна содержать метод boolean shouldRenderActions(), в котором будет проверка акций.

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

Основные классы:

Состояния:

Для использования на конкретном экране необходимо наследоваться от одного из этих классов, учитывая их специфику.