代码之家  ›  专栏  ›  技术社区  ›  juske

将方法作为可点击lambda中的参数传递给Composable。该表达式未使用

  •  0
  • juske  · 技术社区  · 11 月前

    我有以下可折叠的

    @Composable
    fun ClickableBar(text: String, action: () -> Unit) {
        Row(
            modifier = Modifier
                .height(40.dp)
                .background(color = AppPrimaryGreen)
                .fillMaxWidth()
                .clickable { action },
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text(text = text)
    
            Icon(
                painter = painterResource(R.drawable.icon_arrow_right),
                contentDescription = "",
            )
        }
    }
    

    我想表演 action 方法当 Row 被点击,但 行动 被突出显示,上面写着 The expression is unused .

    我做错了什么??

    1 回复  |  直到 11 月前
        1
  •  1
  •   dev.tejasb    11 月前

    你需要这样称呼它:

    action()
    

    自从 action 是传递给的lambda函数 ClickableBar 函数,调用它时需要包含括号,就像任何其他函数调用一样。

        2
  •  1
  •   tyg    11 月前

    实际上有两种方法可以做到这一点。

    dev.tejasb提出了以下建议来调用 action 通过添加括号来执行函数:

    .clickable { action() }
    

    但你也可以这样做:

    .clickable(onClick = action)
    

    这两个选项都为 onClick 参数。而第一个选项创建一个新的lambda并调用 行动 其中,第二个选项直接通过 行动 作为参数。请注意 单击 具有类型 () -> Unit ,类型与 行动 因此,您可以像选项2中那样简单地分配参数。