Как получить доступ к общим настройкам в функции Composable?

Я перехожу от проекта создания нескольких действий к проекту создания одного действия.

Во время миграции я обнаружил, что использую общие настройки на нескольких экранах (теперь составные функции)

Передача объекта общих предпочтений в качестве параметра для каждого компонуемого кажется утомительной. Есть ли лучший способ сделать это?

переход с MVVM -> общие настройки является частью Repo. Так что вы должны использовать его через ViewModel. вы можете внедрить объект общих настроек в виртуальную машину и использовать его через виртуальную машину в компоненте пользовательского интерфейса. На самом деле, я думаю, что это имеет больше смысла, потому что вы будете делать все остальное с помощью ViewModel, так что это просто дополнение, не требующее внедрения shared preferences в составные функции, только модель представления.

ADM 10.04.2022 08:22
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
1
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не знаете.

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

Вам нужно использовать ваши общие настройки из модели представления и предоставить состояние компонуемой функции, это состояние будет обновлено общими настройками и автоматически активирует рекомпозицию экрана.

Прочтите Состояние и Jetpack Compose, особенно это о состояниях, и это о том, как использовать состояния с моделями представлений.

Понятно, я просто думаю, что, поскольку модель представления теперь использует класс, зависящий от контекста, я все еще смогу написать для него тест Unti или мне придется написать тест Android.

nayan dhabarde 10.04.2022 08:30

Это ваше решение — вы можете либо протестировать ViewModel как единое целое (создать экземпляр и возиться с функциями и запускать фиктивные SP-события), либо провести реальный интеграционный тест (хотя у меня меньше опыта в этом).

Shlomi Katriel 10.04.2022 08:33

Другие вопросы по теме