选项卡中的文本和图标参数不允许可组合调用

问题描述 投票:0回答:1

在此代码中,在文本参数中,我收到错误:

@Composable 调用只能在 @Composable 函数的上下文中发生

图标也发生在我身上:

@Composable 调用只能在 @Composable 函数的上下文中发生

如果我删除文本参数和图标参数,代码可以正常工作,但我想在每个选项卡中显示文本和图标。我已经导入了

androidx.compose.material3.Tab
和依赖项
implementation(platform("androidx.compose:compose-bom:2024.04.01"))

PrimaryTabRow(
    selectedTabIndex = selectedTabIndex
) {
    tabItems.forEachIndexed { index, item ->
        Tab(
            selected = (selectedTabIndex == index),
            onClick = {
                selectedTabIndex = index
            },
            text = { Text(text = item.titulo) },
            icon = {
                Icon(
                    imageVector = if (index == selectedTabIndex) item.selecIcon else item.unselecIcon,
                    contentDescription = item.titulo
                )
            }
        ) {

        }
    }
}
android kotlin tabs android-jetpack-compose-material3
1个回答
0
投票

您需要删除

{ }
之后的空 lambda(大括号
Tab(...)
)。

原因是有两种 Tab 可组合项,一种带有参数

text
,另一种带有内容 lambda。您尝试使用这两个参数,因此编译器无法决定选择两个可组合项中的哪一个,并且暂时不需要。

对于代码的其余部分,它假设有一些函数具有您指定的所有参数,但它不知道它们是什么类型,因此

text
icon
lambda 被假设为简单的 lambda乍一看看起来还不错。但是您在这些 lambda 中使用的
Text
可组合项和
Icon
可组合项检测到它们不是从可组合 lambda 调用的,因此您的错误。

您偶然发现的错误是继第一个无法找到

Tab
的错误之后发生的。如果您在看到以下错误时就开始这样做,那么它们已经消失了。

© www.soinside.com 2019 - 2024. All rights reserved.