Jetpack Compose:LazyHorizontalGrid调用Text报错的原因及修复方案
问题解答:LazyHorizontalGrid中无法直接使用Text组件的原因及修复方案
报错原因
LazyHorizontalGrid的content参数属于LazyGridScope作用域,这个作用域不是@Composable函数上下文。你直接在for循环里调用Text()(@Composable函数),相当于在非Composable环境中调用Composable函数,违反了Jetpack Compose的调用规则,因此触发该错误。
修复方案
Lazy系列组件(包括LazyHorizontalGrid)提供了专门的API来管理列表项,必须使用items或item方法包裹Composable内容,这些方法内部会正确传递Composable上下文。
修复后的代码示例:
@Composable fun Greeting(modifier: Modifier = Modifier) { LazyHorizontalGrid( rows = GridCells.Fixed(2) ) { // 用items方法遍历集合生成列表项 items(listOf("a", "b", "c", "d", "e")) { item -> Text(text = item) } } }
如果需要单独添加单个列表项,也可以使用item方法:
@Composable fun Greeting(modifier: Modifier = Modifier) { LazyHorizontalGrid( rows = GridCells.Fixed(2) ) { item { Text(text = "a") } item { Text(text = "b") } // 依次添加其他项 } }
内容的提问来源于stack exchange,提问作者aoao
相关产品推荐
相关产品推荐

