Глобальная модель представления в Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Глобальная модель представления в Jetpack Compose

Сообщение Anonymous »

У меня вопрос. Как использовать глобальный экземпляр ViewModel, который можно внедрить с помощью Dagger/Hilt в любые составные элементы в качестве общего экземпляра?
У меня есть MainNavigationViewModel, который обрабатывает некоторые измерения, привязанные к панелям навигации, и я хочу поделиться эти измерения на некоторых экранах в NavHost.
Поэтому я инициализирую эту ViewModel в своей деятельности следующим образом:

Код: Выделить всё

@AndroidEntryPoint
class MainActivity : BaseActivity() {

override val viewModel : MainNavigationViewModel by viewModels()

override val screen: @Composable () -> Unit = {
MainNavigation(viewModel = viewModel)
}

}
А в отдельных составных объектах я просто использую

Код: Выделить всё

@Composable
fun ScreenA(
navigationViewModel: MainNavigationViewModel = hiltViewModel(),
)
а затем собираем MutableState с помощью viewmodel.state.collectAsStateWithLifecycle()
Но по какой-то причине он возвращает неправильный результат значения (по умолчанию из изменяемого состояния). Кажется, что каждый раз, когда я внедряю эту ViewModel, это другой ее экземпляр. Мне нужен общий экземпляр.
Поэтому, если MainNavigation обновит какое-либо значение MutableState внутри этой ViewModel, все экраны, на которых определена эта ViewModel, при необходимости будут перекомпонованы.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»