如何使用 `weight` 修饰符创建可组合函数?
How can I make a composable function with `weight` modifier?
当我有
Column {
Button(onClick = { /*TODO*/ },) {
Text("Original Window")
}
Button(onClick = { /*TODO*/ }) {
Text("Fit System Window")
}
}
我可以创建一个通用的可组合函数
@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
修饰符创建可组合函数?
看来我只需要从 ColumnScope
创建一个扩展
@Composable
fun ColumnScope.MyButton(
onClick: () -> Unit,
content: @Composable RowScope.() -> Unit
) {
Button(
onClick = onClick,
modifier = Modifier.weight(1f),
content = content
)
}
当我有
Column {
Button(onClick = { /*TODO*/ },) {
Text("Original Window")
}
Button(onClick = { /*TODO*/ }) {
Text("Fit System Window")
}
}
我可以创建一个通用的可组合函数
@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
修饰符创建可组合函数?
看来我只需要从 ColumnScope
@Composable
fun ColumnScope.MyButton(
onClick: () -> Unit,
content: @Composable RowScope.() -> Unit
) {
Button(
onClick = onClick,
modifier = Modifier.weight(1f),
content = content
)
}