места где появляться ссыль на viemodel - это compose-функции следующего вида
@Composable
fun MachineState(viewModel: SZMViewModel = viewModel(),
Интересно, а в композе можно явно создавать VM без всяких провайдеров?
Можно, просто создаешь класс и все
А как же vm store owner и это вот всё? 🤔
А автор этого чуда рядом? )
Какой вопрос, такой ответ. А вообще под капотом если упрощенно все тот же синглетон
Можно и активити явно создать. Но толку?
Можно, если смена конфигурации не важна. Если важна, то зачем?
Ну, почитай, пожалуйста, как нужно создавать вьюмодели
В смысле? Например, я создал активити явно: val activity = MyActivity() Что теперь делать с activity? Как запустить?
https://developer.android.com/codelabs/basic-android-kotlin-compose-viewmodel-and-state делал по этому мануала, явно нигде не создаётся viewmodel
А причем тут активити? Речь шла про vm.
Понял, где-то ошибся, значит
Вангую, что колдунство здесь: @Composablefun GameScreen( gameViewModel: GameViewModel = viewModel() ) { // ... } Вот это = viewModel() правильно связывает вм с владельцем. Я в композ не умею, пока что тыкаю его длинной палкой из-за угла.
Суть вопроса одна и та же.
Я вас правильно понял, вы предполаете что viewmodel() это фабричный метод создающий экземпляры viewmodel?
Не одна. Активити это один из сновных компонентов системы.
Да, он привязан к композиции. Возможно, есть смысл создать вьюмодель снаружи и привязать к чему-то другому
Поясните, пожалуйста. Можно ссылкой. В android-программирование первую неделю
Просто пока повторяй чужой код, по чатам обучаться - такое себе
Так я бы и рад, даже не представляю как сформулировать вопрос к Гуглу базируясь на вашем тезисе выше
А вопрос-то в чем?
Так вроде уже нашли ответ на мой вопрос по количеству экземпляров класса, сейчас дойду до ноута и буду гуглить как недопустить создание второго
У VM есть vm store owner. Таким образом несколько элементов UI могут работать с одним и тем же экземпляром класса VM или с разными экземплярами одного и того же класса VM. Хз как в композе это регулируется. В обычном андроиде vm store owner передается в виде параметра в ViewModelProvider.
Ещё раз спасибо, за ответы по делу
Обсуждают сегодня