Я перехожу от проекта создания нескольких действий к проекту создания одного действия.
Во время миграции я обнаружил, что использую общие настройки на нескольких экранах (теперь составные функции)
Передача объекта общих предпочтений в качестве параметра для каждого компонуемого кажется утомительной. Есть ли лучший способ сделать это?
Вы не знаете.
Назначение компонуемых функций — только компоновать экран и обрабатывать события пользовательского интерфейса (клики, прокрутки и т. д.).
Вам нужно использовать ваши общие настройки из модели представления и предоставить состояние компонуемой функции, это состояние будет обновлено общими настройками и автоматически активирует рекомпозицию экрана.
Прочтите Состояние и Jetpack Compose, особенно это о состояниях, и это о том, как использовать состояния с моделями представлений.
Понятно, я просто думаю, что, поскольку модель представления теперь использует класс, зависящий от контекста, я все еще смогу написать для него тест Unti или мне придется написать тест Android.
Это ваше решение — вы можете либо протестировать ViewModel
как единое целое (создать экземпляр и возиться с функциями и запускать фиктивные SP-события), либо провести реальный интеграционный тест (хотя у меня меньше опыта в этом).
переход с MVVM -> общие настройки является частью Repo. Так что вы должны использовать его через
ViewModel
. вы можете внедрить объект общих настроек в виртуальную машину и использовать его через виртуальную машину в компоненте пользовательского интерфейса. На самом деле, я думаю, что это имеет больше смысла, потому что вы будете делать все остальное с помощьюViewModel
, так что это просто дополнение, не требующее внедренияshared preferences
в составные функции, только модель представления.