如何在 viewModel 中使用 Kotlin suspend StateIn 函数

How to use Kotlin suspend StateIn function inside a viewModel

提问人:MXC 提问时间:11/17/2023 最后编辑:MXC 更新时间:11/18/2023 访问量:29

问:

我的 ViewModel 中有这个代码块:

val employeeState: StateFlow<EmployeeDataState> =
        employeeRepository.fetch()
            .map(EmployeeDataUiState::Success)
            .stateIn(
                scope = viewModelScope,
                started = SharingStarted.WhileSubscribed(5_000),
                initialValue = EmployeeDataState.Loading,
            )

编辑:

suspend fun fetchEmployees() = flow {
        try {
            val result = employeesApiService.fetchEmployees()
            emit(result)
        } catch (e: Exception) {
            //emit(emptyList())
        }
    }

employeeRepository.fetch()是连接到改造 API 的挂起函数。

问题是我得到一个错误,该错误必须在协程范围内。我可以更改要使用的代码,但在这种情况下,我不确定如何使用函数。有关如何调用挂起方法的任何帮助。我还看到它有一个重载的方法,但现在确定我将如何使用它。fetchviewModelScope.launch { ..}stateInstateIn()suspend

Android Kotlin android-viewmodel kotlin-flow

评论


答: 暂无答案