修改重量在 jetpack compose 1.1.1 中不可用

Viv*_*odi 2 android kotlin android-jetpack android-jetpack-compose

我在我的 jetpack compose 中使用 compose 1.1.1。我无法更新到最新版本。我想要这样的解决方案。我的修改器出现错误weight。有人可以指导我如何获得weight修改器Row吗?

implementation "androidx.compose.runtime:runtime:$compose_version"
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.foundation:foundation:$compose_version"
implementation "androidx.compose.foundation:foundation-layout:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
implementation "androidx.compose.ui:ui-tooling:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
androidTestImplementation "androidx.compose.ui:ui-test:$compose_version"
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
implementation "androidx.activity:activity-compose:$compose_version"
Run Code Online (Sandbox Code Playgroud)

行.kt

Column {
    Row(
        modifier = Modifier.weight(1f, false)
    ) {
        //...
    }
 }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

错误

Expression 'weight' cannot be invoked as a function. The function 'invoke()' is not found
Run Code Online (Sandbox Code Playgroud)

非常感谢

更新

我在这里添加我的整个代码,请看一下......

@Composable
fun Input(optionData: OptionData) {
    Column(
        modifier = Modifier
            .fillMaxSize()
    ) {
        Item(optionData)
    }
}


@Composable
fun Item(optionData: OptionData) {
    /// more item of compose i.e. Text, Textfield
    Submit()
}

@Composable
fun Submit() {
    Row(
        modifier = Modifier.weight(1f, false)
    ) {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

更新2

在尝试@Thracian解决方案后,它解决了问题,weight但我的观点不会深入人心。

@Composable
fun Submit() {
    Column {
        OnSubmit {
            PrimaryMaterialButton(text = stringResource(id = R.string.submit)) {

            }
        }
    }
}

@Composable
fun ColumnScope.OnSubmit(content: @Composable () -> Unit) {
    Row(
        modifier = Modifier.weight(1f, false)
    ) {
        content()
    }
}
Run Code Online (Sandbox Code Playgroud)

Thr*_*ian 5

@Composable
fun Submit() {
    Row(
        modifier = Modifier.weight(1f, false)
    ) {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

为了使该代码能够从中访问 Modifier.weight() ,Column接收器应该为ColumnScope。某些修饰符是使用范围创建的,因此它们仅在该范围内可用,例如用于行或列的 Modifier.weight 或用于框的 Modifier.matchParentSize。

@Composable
fun ColumnScope.Submit() {
    Row(
        modifier = Modifier.weight(1f, false)
    ) {
        //...
    }
}


// Allowed
Column {
    Submit()
}

//Not Allowed
Row() {
    Submit()
}
Run Code Online (Sandbox Code Playgroud)