Нужно ли BottomSheetFragment ViewModel? - PullRequest
2 голосов
/ 29 апреля 2020

При работе с Нижними листами и Диалогом, как выполнить операцию:

  1. Использовать SharedViewModel с фрагментом, который создал этот нижний лист?
  2. Не используете ViewModel вообще?
  3. Создание отдельной ViewModel для BottomSheet?
  4. Любой другой подход, который является наилучшей практикой

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Я go при первом подходе с использованием ShareViewModel, но если вы понимаете базовый слой, совместно используемая ViewModel также является ViewModel, это просто соглашение о именах, которое мы им дали.

Также иногда становится утомительно писать отдельную ViewModel для работы с фрагментами и нижним листом, где MainActivity ViewModel также может делать то же самое.

Что я имел в виду, чтобы избежать сложности, я использую одну модель представления для каждого действия. Теперь, когда я хочу выполнить что-то во фрагменте или на нижнем листе, я просто передаю модель представления в самом конструкторе. Многие люди подумают, что это плохая практика, но это не так, в соответствии с концепцией модели представления, она будет создаваться и уничтожаться только в соответствии с жизненным циклом действия, и все время будет создаваться только один экземпляр. Также, делая это, я могу использовать внедрение зависимостей с фрагментом (я не думаю, что DI работает с компонентом навигации, но я думаю, что вы поняли мою точку зрения).

1 голос
/ 29 апреля 2020
  1. Если нижний лист / диалог тесно привязан к вашему фрагменту "хоста" (он разделяет некоторые специфические c живые данные), и он никогда не будет создан из какого-либо другого фрагмента, тогда можно использовать модель общего представления.
  2. Если диалоговое окно очень простое (например, один вход + 2 кнопки), тогда модель представления может не понадобиться
  3. Если диалоговое окно действительно нуждается в модели представления (то есть оно выбирает и отображает некоторые динамические данные *) 1009 * данных), тогда имеет смысл отдельная модель представления
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...