сети. Нигде больше эти данные не нужны, только на этом экране. Загрузкой данных занимается ВМ, после загрузки данные кладутся в StateFlow переменную в ВМ, на которую сейчас подписываюсь в composable экране через collectAsState(). Как лучше организовать этот кейс?
Я два варианта тут увидел:
1) передавать ВМ в компоуз функцию, в начале функции проверять стейт, если не Initial, то запускать загрузку;
2) передавать в компоуз функцию уже готовые данные, но тогда разбухает активити и вообще активити к этому процессу относится опосредованно.
Экранов с такой логикой несколько, потому не хотелось бы, чтобы активити занималась началом загрузки, а первый вариант кажется не совсем каноничным, хотя пока его и использую
1 конечно
может тут какой-то сайд эффект нужен? По доке подходит LaunchedEffect, но он запускает корутину, которая и так уже запускается в вм в общем, нормальный подход №1?
Vm сама должна решать когда ей загрузить данные и как их обновлять. Композабл все просто спокойно слушает.
Не совсем понял 1 подход может быть имеется тоже самое, но почему не брать данные при ините ВМ, а дальше передавать стейт?
хм, тоже верно. Эта вм ведь только к этому экрану относится и на старте как раз должна загружать. Да, так лучше будет. В моем случае я из компоуз функции вызывал загрузку, проверяя при этом текущий стейт
Незачто
в композ функции запускаать загрузку?
Обсуждают сегодня