繁体   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