【问题标题】:Use of State hosting to change variable in jetpack compose使用 State hosting 更改 jetpack compose 中的变量
【发布时间】:2023-02-01 19:45:21
【问题描述】:

我想更改 jetpack compose 中变量的值。我正在尝试将 StatefulStateless 与一些代码一起使用,但它在增加值时遇到了一些问题。你们能指导我吗?

ItemColorStateful

@Composable
fun ItemColorStateful() {
    var index by remember { mutableStateOf(-1) }
    Column(modifier = Modifier.fillMaxSize()) {
        Text(text = "Different Color")
        ButtonScopeStateless(
            index = { index },
            onIndexChange = {
                index = it
            }
        )
    }
}

ButtonScope无状态

@Composable
fun ButtonScopeStateless(
    index: () -> Int,
    onIndexChange: (Int) -> Unit,
) {
    Button(onClick = { onIndexChange(index()++) }) {
        Text(text = "Click Me $index")
    }
}

我在 index()++ 上收到错误。

【问题讨论】:

    标签: android kotlin android-jetpack-compose


    【解决方案1】:

    您可以使用:

    @Composable
    fun ItemColorStateful() {
        var index by remember { mutableStateOf(-1) }
        Column(modifier = Modifier.fillMaxSize()) {
            Text(text = "Different Color")
            ButtonScopeStateless(
                index = index ,
                onIndexChange = {
                    index = it
                }
            )
        }
    }
    
    @Composable
    fun ButtonScopeStateless(
        index:  Int,
        onIndexChange: (Int) -> Unit,
    ) {
        Button(onClick = { onIndexChange(index+1) }) {
            Text(text = "Click Me $index")
        }
    }
    

    【讨论】:

      【解决方案2】:

      ItemColorStateful

          @Composable
          fun ItemColorStateful() {
          var index by remember { mutableStateOf(-1) }
          Column(modifier = Modifier.fillMaxSize()) {
              Text(text = "Different Color")
              ButtonScopeStateless(
                  index = index ,
                  onIndexChange = {
                      index++
                  }
              )
          }
      }
      

      ButtonScope无状态

      @Composable
      fun ButtonScopeStateless(
          index: Int,
          onIndexChange: () -> Unit,
      ) {
          Button(onClick = {
              onIndexChange()
          }) {
              Text(text = "Click Me $index")
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-01-05
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        • 2022-12-07
        • 2022-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多