Получение странной ошибки при попытке LazyColumn () в Jetpack compose
Я пытаюсь запустить простой объект LazyColumn, но не могу запустить его без этой странной ошибки. Вот мой код:
@Composable
fun Test(){
LazyColumn() {
Text(text = "Placeholder", fontSize= 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
Вот ошибки:
org.jetbrains.kotlin.diagnostics.SimpleDiagnostic@74c0fa2 (error: could not render message)
org.jetbrains.kotlin.diagnostics.SimpleDiagnostic@c077eec3 (error: could not render message)
Что-то не так с моим кодом или это ошибка? * Я хотел протестировать функцию прокрутки, копируя и вставляя строки после оператора LazyColumn() снова и снова
3 ответа
С участием
1.0.0-beta04
ты можешь использовать:
val itemsList = (0..50).toList()
LazyColumn() {
items(itemsList) {
Text(text = "Placeholder", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
в
LazyListScope
чтобы отобразить элементы, вы должны использовать одну из предоставленных функций:item
, items
, itemsindexed
а также stickyHeader
.
Студия ошибок должна показывать
@Composable invocations can only happen from the context of a @Composable function
; это ошибка, которую вы получите при компиляции этой функции. Эта студия показывает
(error: could not render message)
это известная ошибка, над которой работает команда.
Причина, по которой плагин компилятора compose генерирует эту ошибку, - это лямбда, ожидаемая
LazyColumn
не является составной лямбда, но является
LazyList
DSL, в котором описывается столбец. Например, что-то вроде
@Composable
fun Test(){
LazyColumn() {
items(10_000) {
Text(text = "Placeholder $it", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
}
это, наверное, то, что вы хотели. Он не создает 10 000 элементов, он создает только количество, достаточное для размещения на экране, и при необходимости создает дополнительные строки (отбрасывая строки по мере их закрытия) до строки 9999.
Попробуй это:
@Composable
fun Test(){
LazyColumn() {
for (i in 1..10) {
TestItem(i)
}
}
}
@Composable
fun TestItem(i: Int) {
Text(text = "Placeholder $i", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}