簡體   English   中英

如何使用“權重”修飾符制作可組合的 function?

[英]How can I make a composable function with `weight` modifier?

當我有

Column {
    Button(onClick = { /*TODO*/ },) {
        Text("Original Window")
    }
    Button(onClick = { /*TODO*/ }) {
        Text("Fit System Window")
    }
}

我可以創建一個通用的可組合 function

@Composable
fun MyButton(
    onClick: () -> Unit,
    content: @Composable RowScope.() -> Unit
) {
    Button(
        onClick = onClick,
        content = content
    )
}

Column {
    MyButton(onClick = { /*TODO*/ },) {
        Text("Original Window")
    }
    MyButton(onClick = { /*TODO*/ }) {
        Text("Fit System Window")
    }
}

但是,當我有

Column {
    Button(onClick = { /*TODO*/ },
        modifier = Modifier.weight(1f)) {
        Text("Original Window")
    }
    Button(onClick = { /*TODO*/ },
        modifier = Modifier.weight(1f)) {
        Text("Fit System Window")
    }
}

我無法在下面創建

@Composable
fun MyButton(
    onClick: () -> Unit,
    content: @Composable RowScope.() -> Unit
) {
    Button(
        onClick = onClick,
        modifier = Modifier.weight(1f),
        content = content
    )
}

Column {
    MyButton(onClick = { /*TODO*/ },) {
        Text("Original Window")
    }
    MyButton(onClick = { /*TODO*/ }) {
        Text("Fit System Window")
    }
}

這是因為weight修飾符在ColumnScope接口下。

如何使用weight修改器制作可組合的 function?

看起來我只需要從ColumnScope創建一個擴展

@Composable
fun ColumnScope.MyButton(
    onClick: () -> Unit,
    content: @Composable RowScope.() -> Unit
) {
    Button(
        onClick = onClick,
        modifier = Modifier.weight(1f),
        content = content
    )
}

暫無
暫無

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

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