在使用. observveAsState()时,如何在更改MutableLiveData的值后开始执行代码块?
范例:MutableLiveData变更后,需要呼叫吐司。
这段代码返回错误在inline fun member的计算参数内部不允许组合调用(计算:()-〉类型变量(T)):类型变量(T)
@Composable
fun TextInfo() {
val isSuccess by remember { viewModel.isSuccess.observeAsState() }//var isSuccess = MutableLiveData<Boolean>() — in ViewModel
LaunchedEffect(isSuccess) {
Log.d("IS SUCCESS", "trues")
}
}
2条答案
按热度按时间jk9hmnmh1#
remember{…}
内的块不是可组合作用域,当您尝试将@Composable
函数放入lambda块或另一个不是可组合的函数时,您将遇到类似的问题。我也不认为这里需要
remember{…}
,因为它已经由ViewModel
处理了我对您代码做了一些尝试,
在您的
ViewModel
中每次单击该按钮时,将打印
edqdpe6u2#
您可以在LaunchedEffect内创建吐司,即使在问题中不可用,我假设您尝试在LaunchedEffect内调用LocalContext.current,这是不允许的,因为
LocalContext.current requires
从可组合作用域调用。Android中的可组合函数和普通函数有什么区别?