Android 使用多个相同 class 参数的 Koin 注入视图模型失败

Android Koin injected viewmodel with multiple same class parameters fails

我正在按照她的说明关注文档 https://insert-koin.io/docs/reference/koin-android/viewmodel/#viewmodel-and-injection-parameters

唯一的区别是我的视图模型有 2 个(除了 Koin 注入的 repos 之外)相同 class 字符串的参数。让我们称它们为 stringA = "red" 和 stringB = "blue"。

当我传递参数时,这些参数的定义明显不同。但是当视图模型被实例化时,我记录了字符串并且它们都具有 stringA,“red”的值。

我可以将它们都包装到一个数据中 class,但理想情况下我希望它们分开,知道哪里出了问题或应该做什么吗?

Koin 模块

val viewModelsModule = module {

  viewModel { params ->
    MyViewModel(get(), stringA = params.get(), stringB = params.get(), get()) }

}

ViewModelInjection

  val viewModel: MyViewModel = getViewModel(parameters = {parametersOf("red", "blue")})

MyViewModel 中的参数检查

init {
    viewModelScope.launch {
      Log.d("TAG", "$stringA $stringB")
    }
  }

并打印:

red red

params.get()按类型解析参数。由于两者都是字符串,因此在两种情况下都会匹配第一个。它仅在类型不同(例如 int 和 String)时隐式工作。

解决方法是索引参数: stringA = params[0], stringB = params[1]

更长的上下文片段:

viewModel { params ->
    MyViewModel(get(), stringA = params[0], stringB = params[1], get()) }