在 ViewModel 的 init 块之外看不到 DI

Can't see DI outside of init block of ViewModel

我正在尝试通过发送 category_id 从片段控制 ViewModel 并将其传递到由 Hilt 注入的存储库。 但是 ViewModel 无法在 init 块之外看到存储库。我错过了什么?

@HiltViewModel
class ProjectViewModel @Inject constructor(
repository: ScienceTrackerRepository
) : ViewModel() {

private val _flow = MutableStateFlow(LoadUiState.Success(emptyList()))
val flow: StateFlow<LoadUiState> = _flow.asStateFlow()

fun loadProjects(categoryId: Int) {
    viewModelScope.launch {
        repository.getProjects(categoryId) // unresolved reference "repository"
        repository.flowProjects.collect { feed ->
            _flow.value = LoadUiState.Success(feed)
        }
    }
}

init {
    viewModelScope.launch {
        repository.getProjects(0) 
        repository.flowProjects.collect { feed ->
            _flow.value = LoadUiState.Success(feed)
        }
    }
}
}

您需要像这样添加 var 或 val 关键字:

@HiltViewModel class ProjectViewModel @Inject 构造函数( val 存储库:ScienceTrackerRepository ) : ViewModel() {

}

访问 init 块外的构造函数参数。