如何在 Observable 实时数据函数中调用 jetpack compose 函数?

How can I call jetpack compose function in Observable live data function?

你好,我尝试将其称为 updatedata(it)

的组合函数
 viewModel.ResponseStatus.observe(viewLifecycleOwner) { status ->
                when (status) {
                    FragmentViewModel.PROCESSING,
                    FragmentViewModel.NOT_PROCESSING -> {
                        viewModel.object.let {
                            updatedata(it). <--- error?
                        } ?: faildialog()
                    }

这就是我的 updatadata() 功能

    @ExperimentalFoundationApi
    @OptIn(ExperimentalAnimationApi::class)
    @ExperimentalUnitApi
    @Composable
private fun updatedata(authdata: Payload) {
   composefunction(authdata.client_name)
}

我得到的错误是@Composable invocations can only happen from the context of a @Composable function

这就是我调用的 compose 函数

 @ExperimentalUnitApi
    @ExperimentalAnimationApi
    @ExperimentalAnimationGraphicsApi
    @ExperimentalFoundationApi
    @Composable
    fun composefunction(name: String) {
      Box(){}
}

我不熟悉流或实时数据,更不用说可组合的了,我必须更改哪一部分才能将实时数据传递到组合函数中?

在可组合的世界中,您不会告诉视图在状态更改后要做什么。

@ExperimentalFoundationApi
@OptIn(ExperimentalAnimationApi::class)
@ExperimentalUnitApi
@Composable
private fun updatedata(viewModel: YourViewModel, authdata: Payload) {
   val responseState by viewModel.ResponseStatus.observeAsState()
    when (status) {
       FragmentViewModel.PROCESSING,
       FragmentViewModel.NOT_PROCESSING -> {
             viewModel.object.let {
                 composefunction(authdata.client_name)
             } ?: faildialog()
       }
    }
}

我强烈建议您学习刚才提到的所有内容:LiveData、MutableState 以及如何在 Composable 中思考这些内容如何协同工作。