Jetpack Compose 自定义布局点击不起作用

Jetpack Compose custom layout clicks don't work

我创建了自己的 class,名为 MyInputRow。

@Composable
fun MyInputRow(
    title: String,
    modifier: Modifier = Modifier,
    bgColor: Color,
    icon: Painter,
    clickAction: Unit
) {
    Row(
        modifier = Modifier
            .fillMaxWidth()
            .padding(6.dp)
            .background(color = bgColor)
            .clickable { clickAction },
        verticalAlignment = Alignment.CenterVertically,
    )
    {
        Text(
            modifier = Modifier
                .weight(1f)
                .padding(6.dp)
                .wrapContentWidth(Alignment.Start),
            text = title,
        )
        Image(
            painter = icon,
            contentDescription = "icon"
        )
    }
}

但是,这个 clickAction 不起作用。 具体来说就是在显示画面的时候因为某些原因调用了clickAction,点击Row的时候没有调用clickAction。
调用如下。

class AddActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        ...
        setContent {
            MyTheme {
                    ...
                    AddMain()
            }
        }
    }
}

@Composable
fun AddMain() {
        BarcodeLayout()
    },
}

@Composable
fun BarcodeLayout() {
    Column(Modifier.fillMaxWidth()) {
        Text(text = {...})

        MyInputRow(
            title = ...,
            bgColor = ...,
            icon = ...,
            clickAction = scanBarcode()
        )
    }
}

fun scanBarcode() {
 Timber.d("call scanBarcode")
}

我不知道为什么。请帮助我。

您可以尝试 2 个选项。

选项 1:

.clickable { clickAction() }

或选项 2:

.clickable(clickAction)