当前位置: 首页 > news >正文

android compose viewModel 传参数

android compose viewModel 传参数

android compose viewModel 传参数

在MainActivity 里面可以用viewModels

val userDao = db.userDao()val viewModel by viewModels<MyArticleViewModel>(factoryProducer = {object : ViewModelProvider.Factory {override fun <T : ViewModel> create(modelClass: Class<T>): T {return MyArticleViewModel(userDao) as T}}})

 

在Compose 里

class UserViewModelFactory(private val dao: UserDao) : ViewModelProvider.Factory {override fun <T : ViewModel> create(modelClass: Class<T>): T {if (modelClass.isAssignableFrom(MyArticleViewModel::class.java)) {@Suppress("UNCHECKED_CAST")return MyArticleViewModel(userDao ) as T}throw IllegalArgumentException("Unknown ViewModel class")}
}val factory = UserViewModelFactory(userDao)val viewModel: MyArticleViewModel = viewModel(factory = factory)

 

参考:https://medium.com/@ahmed.ally2/ways-to-pass-parameters-to-a-viewmodel-b2fbba7c12b7