抑制:kotlinx.coroutines.DiagnosticCoroutineContextException:

Tak*_*aki 9 android kotlin android-viewmodel android-jetpack-compose

我正在使用 jetpack compose 制作一个待办事项应用程序,我可以添加待办事项,但是当从数据库获取它们时,我收到了与 Courtine 相关的错误,但我无法得到,我需要帮助,谢谢

  • 获取数据时抛出错误
       Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@4c0bd0e, androidx.compose.ui.platform.MotionDurationScaleImpl@67ef32f, StandaloneCoroutine{Cancelling}@7800d3c, AndroidUiDispatcher@df61ac5]

Run Code Online (Sandbox Code Playgroud)
  • ViewModel获取数据方法
     fun showTasks() = viewModelScope.launch {
        try {
            dataState = dataState.copy(loading = true)
            todoRepository.getTasks().collectLatest {
                dataState = if(it != null){
                    dataState.copy(data = it)
                } else {
                    dataState.copy(error = "List is empty ...")
                }
            }
        }catch (ex  : Exception){
             dataState = dataState.copy(error = ex.localizedMessage)
        } finally {
             dataState = dataState.copy(loading = false)
        }
    }

Run Code Online (Sandbox Code Playgroud)
  • 在屏幕上显示数据
   @Composable
fun HomeScreen(navController: NavController,
               todoViewModel: TodoViewModel = hiltViewModel()
) {

    val state = todoViewModel.dataState
    val context = LocalContext.current
    todoViewModel.showTasks()

    if(state.error != null){
        Toast.makeText(context,state.error,Toast.LENGTH_LONG).show()
    } else {
        Column(modifier = Modifier.fillMaxSize()) {
            Row(modifier = Modifier.fillMaxWidth()){
                Text("Reminder",modifier = Modifier
                    .fillMaxWidth()
                    .weight(1f)
                    .padding(top = 10.dp, start = 20.dp), fontSize = 20.sp, fontWeight = FontWeight.Bold)
                IconButton(onClick = {    navController.navigate(ScreenNavigation.Add.route)}) {
                    Icon(imageVector = Icons.Filled.Add, contentDescription = null, tint = Color.Black)
                }
            }
            LazyColumn(modifier = Modifier.padding(top = 10.dp, start = 20.dp, end = 20.dp, bottom = 40.dp)){
                items(state.data!!.size){ index ->
                    Row(modifier = Modifier
                        .fillMaxWidth()
                        .height(60.dp)) {
                        Text(text = state.data!![index].task!!, modifier = Modifier.weight(1f), fontSize = 19.sp, fontWeight = FontWeight.Bold)
                        Text(text =  state.data!![index].time!!, fontSize = 17.sp, fontWeight = FontWeight.W500)
                    }
                }
            }
            if(state.loading == true){
                CircularProgressIndicator()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)