簡體   English   中英

如何在另一個自定義組合中使用自定義組合作為參數類型?

[英]How to use a custom composable as parameter type in another custom composable?

有沒有辦法在另一個自定義組合中使用自定義組合作為參數類型? 嘗試這樣做只會引發unresolved reference編譯器錯誤。 但是,使用 Jetpack Compose 提供的內置可組合項作為AlertDialog等參數不會引發任何錯誤。 我想在自定義組合中使用插槽 API 模式,但將插槽限制為僅其他自定義組合。

示例結構

@Composable
fun Permission(
    PermissionNotGrantedContent: CustomDialog, //Unresolved reference error here
    PermissionNotAvailableContent: CustomDialog, //unresolved reference error here
    PermissionGrantedContent: @Composable () -> Unit
) { ... }

Permission(
    PermissionNotGrantedContent = {
        CustomDialog(...)           
    },
    PermissionNotAvailableContent = { 
        CustomDialog(...)
    }
) {
    Text("Thanks for granting the permission!")
}

例如 TextField 使用:

trailingIcon: @Composable (() -> Unit)? = null

我這樣做:

trailingIcon = {
    IconButton(onClick = { viewModel.changeVisibility() }) {
        if (viewModel.clearPassword.collectAsState().value!!) {
            Icon(painter = painterResource(id = R.drawable.ic_visibility), contentDescription = "visible icon")
        } else {
            Icon(
                painter = painterResource(id = R.drawable.ic_invisible), contentDescription = "invisible icon")
        }
    }
},

您應該在 Box、TextField 等可組合功能上使用命令 + 左鍵單擊(可能是 CTRL + 左鍵單擊窗口),它可以向您顯示很多參數,並且您可以看到它是如何工作的。

暫無
暫無

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

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