也许我是盲人,但我找不到任何关于使用dagger-hilt在side a compositable中注入需要参数的依赖项的信息。
假设我的ViewModel看起来像这样:
class MyViewModel @AssistedInject constructor(@Assisted myValue: Int) : ViewModel() {
...
}
我有一个像这样的工厂界面:
@AssistedFactory
interface MyViewModelAssistedFactory {
fun create(myValue: Int): MyViewModel
}
如何将某个值作为参数注入该依赖项?
我在哪里找到的所有答案都是:
@Inject
var myViewModelFactory: MyViewModelAssistedFactory;
和
val initValue = 4
fun onCreate(){
val viewModel = myViewModelFactory.create(initValue)
}
但这在可组合的乐趣中是行不通的。
不确定是否仍然相关,但如果您使用导航组件,您可以在导航图生成器中调用hiltViewModel()。示例:https://github.com/pablichjenkov/ComposeStudy/blob/04298ca8393d3eea0f5b7883fb223161ef79a962/app/src/main/java/com/pablichj/study/compose/home/HomeNavigation.kt#L24
如果不使用Jetpack Navigation,则解决方案会更加复杂。您需要在应用程序中创建一个状态树,它们在其中实现LifecycleOwner和ViewModelStoreOwner,以便能够适当地安装ViewModel。好消息是,已经有工作在做了,请查看以下内容:https://github.com/Syer10/voyager