在 Jetpack compose 中尝试 LazyColumn() 时出现奇怪的错误
Getting weird Error when trying LazyColumn() in 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)
是我的代码有问题,还是bug?
*我想通过一遍又一遍地复制和粘贴 LazyColumn() 语句后的行来测试滚动功能
试试这个:
@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))
}
有了 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
in order to display the items you have to use one the provided functions:item
, items
, itemsindexed
and stickyHeader
.
Studio 应该显示的错误是@Composable invocations can only happen from the context of a @Composable function
;这是编译此函数时出现的错误。 Studio 显示 (error: could not render message)
是团队正在处理的已知错误。
compose 编译器插件生成此错误的原因是 LazyColumn
预期的 lambda 不是可组合的 lambda,而是描述该列的 LazyList
DSL。例如,
@Composable
fun Test(){
LazyColumn() {
items(10_000) {
Text(text = "Placeholder $it", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
}
可能就是您想要的。它不会创建 10,000 个项目,它只会创建足以适合屏幕的项目,并且会根据需要创建额外的行(丢弃被遮挡的行)直到第 9,999 行。
我正在尝试 运行 一个简单的 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)
是我的代码有问题,还是bug? *我想通过一遍又一遍地复制和粘贴 LazyColumn() 语句后的行来测试滚动功能
试试这个:
@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))
}
有了 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
in order to display the items you have to use one the provided functions:item
, items
, itemsindexed
and stickyHeader
.
Studio 应该显示的错误是@Composable invocations can only happen from the context of a @Composable function
;这是编译此函数时出现的错误。 Studio 显示 (error: could not render message)
是团队正在处理的已知错误。
compose 编译器插件生成此错误的原因是 LazyColumn
预期的 lambda 不是可组合的 lambda,而是描述该列的 LazyList
DSL。例如,
@Composable
fun Test(){
LazyColumn() {
items(10_000) {
Text(text = "Placeholder $it", fontSize = 30.sp)
Spacer(modifier = Modifier.padding(10.dp))
}
}
}
可能就是您想要的。它不会创建 10,000 个项目,它只会创建足以适合屏幕的项目,并且会根据需要创建额外的行(丢弃被遮挡的行)直到第 9,999 行。