如何使用viewModel从另一个可组合对象更改一个可组合对象的整数值,以便当我们导航到那个可组合对象/屏幕时,我们应该看到更改后的值
private var _amt = mutableStateOf<Int>(5) var amt: MutableState<Int> = _hanging fun changeHangingToFortyFive(){ amt.value = 45 }
5uzkadbs1#
理想情况下,您应该提升父组合对象(可能是NavHost)中的视图模型,并传递一个lambda表达式来更新子组合对象中视图模型的值。示例:向某个子组件传递回调函数,以从那里设置视图模型的值。
@Composable fun parent(viewModel: ViewModel){ childComposable(onValueChange= {changedValue -> viewModel.updateAmt(changedValue} ) }
vdzxcuhz2#
您可以添加private set,而不是具有private _variable和public variable:
private set
private _variable
public variable
class MyViewModel: ViewModel() { var amt by mutableStateOf(5) private set fun updateAmt(newValue: Int) { amt = newValue } }
在你的组合里。
val viewModel: MyViewModel = viewModel() val value = viewModel.amt //To update viewModel.updateAmt(newValue)
2条答案
按热度按时间5uzkadbs1#
理想情况下,您应该提升父组合对象(可能是NavHost)中的视图模型,并传递一个lambda表达式来更新子组合对象中视图模型的值。
示例:向某个子组件传递回调函数,以从那里设置视图模型的值。
vdzxcuhz2#
您可以添加
private set
,而不是具有private _variable
和public variable
:在你的组合里。