アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

Listを作成する【Jetpack Compose (Desktop)】

バージョン情報

0.3.0LazyColumnFor が無くなって、LazyColumnに統合されたようなので、そちらを使用します。

plugins {
    kotlin("jvm") version "1.4.30"
    id("org.jetbrains.compose") version "0.3.0-build150"
}

古い情報はこちら。
https://matsudamper.hatenablog.com/entry/2021/02/06/231713

本文

countState<Int>.value を渡してあげます。
indexが流れてくるので自分で表示に必要なitemを取得するようになりました。
keyAndroidのBundleに保存可能な形でないといけないようです。差分計算に使うのかなと思っています。nullを指定するとIndexが使用されます。

fun main() = Window {
    MaterialTheme {
        val listItems = remember { MutableStateFlow(listOf(0)) }
        Column {
            Column {
                Button(
                    onClick = {
                        listItems.value = listItems.value
                            .plus(listItems.value.last() + 1)
                    }
                ) {
                    Text(text = "add list")
                }
            }

            val count = listItems.collectAsState().value.size
            LazyColumn(
                modifier = Modifier.fillMaxSize()
            ) {
                items(
                    count = count,
                    key = { index -> listItems.value[index] }
                ) { index ->
                    val item = listItems.value[index]

                    Column(
                        modifier = Modifier.height(100.dp)
                    ) {
                        Text(text = item.toString())
                    }
                    Divider(color = Color.Black)
                }
            }
        }
    }
}