Jetpack Compose - 如何获取 LazyVerticaGrid 项目行索引?

Jetpack Compose - How to get LazyVerticaGrid item row index?

我使用 LazyVerticalGrid 来显示项目,带有自适应 GridCells,即根据屏幕宽度,列数可变。

LazyVerticalGrid(
        columns = GridCells.Adaptive(minSize = 160.dp),

我希望顶行中的项目显示略有不同。我可以通过将布尔参数传递给这些项目可组合项来做到这一点,例如

itemsIndexed(
        items = newsList,
    ) { index, item ->
        NewsCard(
            newsItem = item,
            isHero = index == 0,

在此示例中,网格中的第一个项目将具有所需的布局,但如果网格中有多列,则顶行的其他项目将有所不同。我的问题是我不知道如何检测该项目是否在第一行。有没有办法动态读取 Adaptive LazyGrid 中有多少列?或者其他一些检索当前行索引的方法(而不只是项目索引)?

所以我发现 maxLineSpan 可以满足我的需求。这在 LazyGridItemSpanScope 中可用。这是我一直在寻找的解决方案(欢迎提出改进建议):

Surface {
   val isHero = remember { mutableStateMapOf<Int, Boolean>() }
   LazyVerticalGrid(
          columns = GridCells.Adaptive(minSize = 150.dp),
          ...
   ) {
          itemsIndexed(
                 items = newsList,
                 span = { index, _ ->
                        isHero[index] = index < maxLineSpan -1
                 }
          ) { index, item ->
                 NewsCard(
                        newsItem = item,
                        isHero = isHero[index] == true,
                        ...