簡體   English   中英

Compose - 如何知道何時渲染了子可組合

[英]Compose - How to know when a sub-composable has been rendered

在 Compose 上工作,我想知道何時渲染了一個子組合來啟動我的LaunchEffect

這是我想要實現的一個小片段:

fun MyCompo(
    screen: @Composable (Modifier) -> Unit,
) {
    val fr = remember { FocusRequester() }
    screen(Modifier.focusRequester(fr))

    LaunchEffect(Unit) {
        fr.requestFocus()
    }
}

我的LaunchEffect崩潰了,因為它是在screen()有時間渲染之前啟動的。

知道如何實現這一目標嗎? 謝謝

如何將回調添加到您的屏幕 Composable 並從屏幕實現的 LaunchedEffect 調用它? 這行得通嗎?

@Composable
fun MyComposable(
    screen: @Composable (Modifier, ()->Unit) -> Unit,
) {
    val fr = remember { FocusRequester() }
    screen(Modifier.focusRequester(fr)) {
        println("Child Composable")
    }

    LaunchedEffect(Unit) {
        println("Parent Composable")

        fr.requestFocus()
    }
}

並調用它

MyComposable { modifier, onComposed->
    Box(modifier = modifier
        .size(200.dp)
        .border(3.dp, Color.Red)) {

        LaunchedEffect(key1 = Unit){
            onComposed()
        }
    }

}

暫無
暫無

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

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