如何使用 Koin 注入数据 class?
How to inject data class using Koin?
当我的应用程序启动时,我用一些数据创建对象,我想在 services/viewModels 之间共享相同的对象实例。
是否可以使用 Koin 将相同的数据实例 class 注入 viewModel?
编辑:
当应用程序在启动时从 firebase 加载数据时,我在 MainViewModel
中创建了用户对象。
@IgnoreExtraProperties
@Keep
data class User(
val id: String = "",
val name: String? = null,
val surname: String? = null,
val email: String? = null,
val avatarUrl: String? = null
)
我会创建一个 holder 对象,比如说 UserManager
,来保存一个可选的 User
实例。这个 holder 是你可以在你的 koin 图中作为 single
提供的东西,任何负责设置 User
实例的组件(例如你的 MainViewModel
)都可以更新单例 holder 内的实例。
如果您的视图模型继承自 KoinComponent
,您可以访问 getKoin
方法来声明您的用户对象。
class MainViewModel : ViewModel(), KoinComponent {
用户对象将在声明后可供应用程序的其余部分使用。
// user created from data from firebase ...
fun insertKoinFor(user: User) {
// declare koin the user of type User
getKoin().declare<User>(user)
// or declare with a named qualifier
getKoin().declare(user, named("myUser"))
}
希望对您有所帮助。
当我的应用程序启动时,我用一些数据创建对象,我想在 services/viewModels 之间共享相同的对象实例。
是否可以使用 Koin 将相同的数据实例 class 注入 viewModel?
编辑:
当应用程序在启动时从 firebase 加载数据时,我在 MainViewModel
中创建了用户对象。
@IgnoreExtraProperties
@Keep
data class User(
val id: String = "",
val name: String? = null,
val surname: String? = null,
val email: String? = null,
val avatarUrl: String? = null
)
我会创建一个 holder 对象,比如说 UserManager
,来保存一个可选的 User
实例。这个 holder 是你可以在你的 koin 图中作为 single
提供的东西,任何负责设置 User
实例的组件(例如你的 MainViewModel
)都可以更新单例 holder 内的实例。
如果您的视图模型继承自 KoinComponent
,您可以访问 getKoin
方法来声明您的用户对象。
class MainViewModel : ViewModel(), KoinComponent {
用户对象将在声明后可供应用程序的其余部分使用。
// user created from data from firebase ...
fun insertKoinFor(user: User) {
// declare koin the user of type User
getKoin().declare<User>(user)
// or declare with a named qualifier
getKoin().declare(user, named("myUser"))
}
希望对您有所帮助。