我如何使用 Hilt 将 Viewmodel 放入可组合项中
How I can get Viewmodel inside composable using Hilt
我正在使用 hilt 进行依赖项注入,我找不到直接在可组合内部获取视图模型的方法,因为我们不能将 @AndroidEntryPoint 注释与 compose 一起使用,当我从 activity..
像这样..
@HiltViewModel
class MyVm @Inject constructor(
private val someDep: SomeDep,
) : ViewModel() {}
我的看法——在这种情况下考虑它的片段
@AndroidEntryPoint
class MYFragment : Fragment() {
private val viewModel: MyVm by viewModels()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return ComposeView(requireContext()).apply {
setContent {
MYTheme {
MyTopLevelComposableScreen(
viewModel = viewModel
)
}
}
}
}
}
还有我的顶级可组合项
@Composable
fun MyTopLevelComposableScreen(vm:MyVm){
}
或直接在顶级可组合项中
@Composable
fun MyTopLevelComposableScreen(vm: MyVm = viewModel()){
}
https://developer.android.com/jetpack/compose/libraries#hilt
你可以像这样注入你的 viewModel
@Composable fun MainScreen(viewModel: HomeScreenViewModel = hiltViewModel())
您可以在此 link 中查看我的示例项目以获取更多信息 github
首先,实现这个模块:
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07")
而且,你可以这样使用它:
@Composable
private fun MyLayout() {
val vm: MyViewModel = viewModel() // @HiltViewModel
...
我正在使用 hilt 进行依赖项注入,我找不到直接在可组合内部获取视图模型的方法,因为我们不能将 @AndroidEntryPoint 注释与 compose 一起使用,当我从 activity..
像这样..
@HiltViewModel
class MyVm @Inject constructor(
private val someDep: SomeDep,
) : ViewModel() {}
我的看法——在这种情况下考虑它的片段
@AndroidEntryPoint
class MYFragment : Fragment() {
private val viewModel: MyVm by viewModels()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return ComposeView(requireContext()).apply {
setContent {
MYTheme {
MyTopLevelComposableScreen(
viewModel = viewModel
)
}
}
}
}
}
还有我的顶级可组合项
@Composable
fun MyTopLevelComposableScreen(vm:MyVm){
}
或直接在顶级可组合项中
@Composable
fun MyTopLevelComposableScreen(vm: MyVm = viewModel()){
}
https://developer.android.com/jetpack/compose/libraries#hilt
你可以像这样注入你的 viewModel
@Composable fun MainScreen(viewModel: HomeScreenViewModel = hiltViewModel())
您可以在此 link 中查看我的示例项目以获取更多信息 github
首先,实现这个模块:
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07")
而且,你可以这样使用它:
@Composable
private fun MyLayout() {
val vm: MyViewModel = viewModel() // @HiltViewModel
...