Как передать данные из LiveData в переменную?

Я новичок. Пробую передать в Composable - функцию данные из LiveData. Но судя по логу, в лайвдате данные (список объектов) есть, а в переменную, куда хочу передать - нет. Почему так? И как всё-же передать данные?

@Composable
fun Function(viewModel: CoinViewModel, lcowner: ComponentActivity) {
    var listOfCoinPriceInfo: List<CoinPriceInfo> = listOf()
    viewModel.priceList.observe(lcowner, {
        listOfCoinPriceInfo = it
        Log.d("COMPOSABLE_Function_it", it.toString())
    })
    Log.d("COMPOSABLE_Function", listOfCoinPriceInfo.toString())
    Scaffold(
        content = {
            CryptoContent(listOfCoinPriceInfo)
        })
}

и лог:

2021-11-28 23:21:33.108 24916-24916/com.example.jetpackcrypto D/COMPOSABLE_Function: []
2021-11-28 23:21:36.055 24916-24916/com.example.jetpackcrypto D/COMPOSABLE_Function_it: [CoinPriceInfo(type=5, market=CCCAGG, fromsymbol=OKB, tosymbol=USD, flags=2050, price=21.96194, lastupdate=1638130863, median=21.95205569, lastvolume=96.939104, lastvolumeto=2128.97078570176, lasttradeid=101147202, volumeday=1.3602300150355134E7, volumedayto=2.987328997640904E8, volume24hour=1.462216445610299E7, volume24hourto=3.211310984550664E8, ope....

Ответы (2 шт):

Автор решения: Eugene Krivenja

Вот так примерно ваш код должен выглядеть.

viewModel.priceList.observe(lcowner, {
    Scaffold(
        content = {
            CryptoContent(it)
    })
})

Нельзя выставлять данные, которых еще нет.

→ Ссылка
Автор решения: Maxim

Внутри compose функций используйте расширение androidx.compose.runtime.livedata.observeAsState. Вероятно вам следует прокинуть viewModel дальше в CryptoContent, в непосредственное место отрисовки списка.

viewModel.priceList.observeAsState().value.forEach {
    Text(text=it)
}
→ Ссылка