首页 > 其他分享 >20240219

20240219

时间:2024-02-27 13:00:24浏览次数:19  
标签:viewModel 20240219 Text ViewModel value State 使用

State的使用

在Compose中,我们可以使用State来管理数据,State是一个可以被观察的数据,当数据发生变化时,State会通知所有的观察者。我们可以使用State来管理UI的状态,比如显示和隐藏组件、改变组件的样式等。

什么时候使用State

当我们需要管理UI的状态时,我们可以使用State。比如,当我们需要显示和隐藏一个组件时,我们可以使用State来管理组件的可见性。当我们需要改变组件的样式时,我们可以使用State来管理组件的样式。

用或者不用State的例子

下面是一个使用State的例子,我们使用State来管理一个Text的可见性:

@Composable
fun Example() {
    val visible = remember { mutableStateOf(true) }
    if (visible.value) {
        Text("Hello, World!")
    }
}

下面是一个不使用State的例子,我们使用if语句来管理一个Text的可见性:

@Composable
fun Example() {
    val visible = true
    if (visible) {
        Text("Hello, World!")
    }

}

在这个例子中,我们使用State来管理Text的可见性,这样当visible的值发生变化时,Text会自动更新。而在不使用State的例子中,我们需要手动更新Text的可见性。

用ViewModel管理State

在Compose中,我们可以使用ViewModel来管理StateViewModel是一个用来管理UI状态的类,它包含了所有的数据和状态,我们可以通过viewModel函数来获取ViewModel的实例。下面是一个使用ViewModel的例子:

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ExpenseRecordInputSheet(viewModel: ExpenseTrackerViewModel) {
    val inputName = viewModel.inputName
    val inputMoney = viewModel.inputMoney
    Column(modifier = Modifier.padding(20.dp)) {
        TextField(
            value = inputName.value,
            onValueChange = { inputName.value = it },
            label = { Text("Name") },
            modifier = Modifier.fillMaxWidth().align(Alignment.CenterHorizontally).padding(10.dp)
        )
        TextField(
            value = inputMoney.value,
            onValueChange = { inputMoney.value = it },
            label = { Text("Money") },
            modifier = Modifier.fillMaxWidth().align(Alignment.CenterHorizontally).padding(10.dp)
            //todo add filter to only allow numbers
        )
        Button(
            onClick = { viewModel.submitData() },
            modifier = Modifier.fillMaxWidth().align(Alignment.CenterHorizontally).padding(10.dp)

        ) {
            Text("Submit")
        }
    }
}

在这个例子中,我们使用ViewModel来管理TextField的值,当TextField的值发生变化时,ViewModel会自动更新。

标签:viewModel,20240219,Text,ViewModel,value,State,使用
From: https://www.cnblogs.com/sugar-refinery/p/18036660

相关文章

  • 20240219比赛总结
    T1素数https://gxyzoj.com/d/hzoj/p/3598先预处理出32767以下的质数,再用双指针求解#include<cstdio>usingnamespacestd;intp[32767],m,n,ans,x;boolvis[32768];voidprime(){ for(inti=2;i<=32767;i++) { if(!vis[i])p[++m]=i; for(intj=1;i*p[j]<=32767;j+......
  • [20240219]建立完善sql_idx.sh脚本.txt
    [20240219]建立完善sql_idx.sh脚本.txt--//再次遇到sql_id的计算问题,该语句已经dba_hist相关视图无法查询.--//w3wp.exe程序里面的sql语句脚本带有^M符号(dos文本格式),执行时并不过滤.--//而我的计算sql_id脚本计算时过滤掉^M符号,导致计算错误.--//我修改完善如下:(注里面的^M......
  • 20240219总结
    P9994[YnoiEasyRound2024]TEST_132根号分治。考虑修改操作。如果修改的x数量大于阙值B,那么打上操作次数标记,否则直接各自修改对应的\(y_i\)答案。查询时对于一个y,记录下所有使得xi数量大于B且yi=y的i,这一些贡献是没有加上的。显然xi的数量<=n/B,对于每一个这样的xi快速......