簡體   English   中英

Android 將 function 組合成可組合的

[英]Android compose passing function into composable

我正在嘗試學習撰寫,並且正在切換工具欄以使用它,但我正在努力理解如何通過 function。

數據 class

data class ToolbarData(
    val closeClick: (() -> Unit)? = null,
    val title: Int,
    val completeClick: (() -> Unit)? = null
)

可組合

@Composable
fun ComposeToolBar(toolbarData: ToolbarData) {
    Row(verticalAlignment = Alignment.CenterVertically) {
        Image(
            painter = painterResource(id = drawable.ic_close),
            contentDescription = stringResource(id = R.string.close_descrption),
            Modifier.clickable { toolbarData.closeClick?.invoke() }
        )
        Text(text = stringResource(id = toolbarData.title))
        Image(
            painter = painterResource(id = drawable.ic_check),
            contentDescription = stringResource(id = R.string.complete_descrption)
        )
    }
}

並預覽 function

@Preview
@Composable
fun PreviewToolbar() {
    ComposeToolBar(toolbarData = ToolbarData(title = R.string.app_name))
}

如果我刪除

Modifier.clickable { toolbarData.closeClick?.invoke() }

構建得很好,並且它可以為空或不可為空,我得到了錯誤。

org.jetbrains.kotlin.backend.common.BackendException:后端內部錯誤:IR降低期間異常正在編譯的文件:/path 根本原因java.lang.NullPointerException被拋出:org.jetbrains.kotlin.backend.jvm.lower. inlineclasses.InlineClassAbi.getUnderlyingType(InlineClassAbi.kt:61)

原來我在將它添加到我的項目時遺漏了下面的內容。

composeOptions {
    kotlinCompilerExtensionVersion = "1.0.1"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM