是否有更好的方法使用Koin在android中的所有子级之间共享sharedviewmodel?

问题描述

我有一个接口(我称为FragmentParent),该接口由主要活动的视图模型实现,该接口具有一些基本功能,我希望在项目中的所有片段之间共享这些功能(例如报告错误显示加载等)>

我正在使用导航API,因此我只有一个活动和许多子片段

此刻我要做的是:

class Mainviewmodel(app:Application) :Androidviewmodel(app),FragmentParent {
      override fun showError(error:String)
      override fun showLoading(show:Boolean)
      .......
}

在我的模块中,我这样声明:

viewmodel{ Mainviewmodel(androidApplication()) }

当前使用它时,我必须编写如下代码

class ChildFragment: Fragment(),KoinComponent {
     val parent :FragmentParent by sharedviewmodel<Mainviewmodel>()
     val vm : Childviewmodel by viewmodel<Childviewmodel> { parametersOf { parent } }

}

将我的子视图模型声明为:

class Childviewmodel(app:Application,private val parent:FragmentParent): Androidviewmodel(app) {
    ...
}

和我的模块文件

viewmodel{ params-> Childviewmodel(androidApplication(),params[0] }

有没有更好的方法将共享视图模型注入koin的子视图模型中?还是我将其作为子项的参数传递给构造函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)