Kar*_*ouh 6 mvvm viewmodel android-jetpack-compose dagger-hilt
我正在做与此处的文档中所示相同的操作。我想将 ViewModel 注入可组合函数(屏幕),但出现此错误:
无法创建类 com.example.blotube.ui.later.LaterViewModel 的实例
我的视图模型:
@HiltViewModel
class LaterViewModel @Inject constructor(
private val database: Database
):ViewModel() {
val watchLater=database.videos().getAll()
}
Run Code Online (Sandbox Code Playgroud)
我的可组合函数(屏幕):
@Composable
fun WatchLater(vm: LaterViewModel = viewModel()){
val videos=vm.watchLater.observeAsState()
val context= LocalContext.current
}
Run Code Online (Sandbox Code Playgroud)
Sep*_*ehr 55
从版本中,androidx.hilt:hilt-navigation-compose:1.0.0-alpha02
您可以通过以下方式将视图模型注入可组合函数:
hiltViewModel<ViewModelType>()
Run Code Online (Sandbox Code Playgroud)
例子:
@Composable
fun LoginScreen(viewModel: LoginViewModel) {}
LoginScreen(
viewModel = hiltViewModel<LoginViewModel>()
)
Run Code Online (Sandbox Code Playgroud)
更新:
import androidx.hilt.navigation.compose.hiltViewModel
@Composable
fun LoginScreen(
viewModel: LoginViewModel = hiltViewModel()
){
val videos=vm.watchLater.observeAsState()
val context= LocalContext.current
}
Run Code Online (Sandbox Code Playgroud)
Oti*_*wel 10
我发现最简单的方法是在可组合函数内部。implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'
然后添加依赖;
@Composable
fun Foo(){
val viewModel : Bar = hiltViewModel()
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以像往常一样使用视图模型了。
您可以通过hiltViewModel()直接在 Composable 函数中使用 ViewModel
@Composable
fun WatchLater(vm: LaterViewModel = hiltViewModel()) {
val videos = vm.watchLater.observeAsState()
val context = LocalContext.current
}
Run Code Online (Sandbox Code Playgroud)
请务必添加以下内容
这似乎是 Jetpack Compose 中的一个错误,可能需要等待 Jetpack 库的更新才能解决它。
作为一种可能的解决方法,您可以在活动中实例化视图模型并将其传递给可组合函数
val viewModel: LaterViewModel = viewModel(
"later_viewmodel",
factory = defaultViewModelProviderFactory
)
WatchLater(viewModel)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是导航图组件,您还可以使用以下命令将视图模型范围限定到导航图
val viewModel: LaterViewModel = hiltNavGraphViewModel<LaterViewModel>()
WatchLater(viewModel)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1709 次 |
最近记录: |