flutter - 在 Flutter 中使用 Kiwi 选择注入依赖项
问题描述
我有以下代码:
KiwiContainer()
..registerFactory((c) => GetOrderListOfItemsUseCase(
repository: c<ShopRepository>()))
这里的问题是需要一个从其扩展GetOrderListOfItemsUseCase
的实例。IProfileRepository
ShopProfileRepository
注意:IProfleRepository
由IUserProfileRepository
和扩展IShopProfileRepository
。
更新:我有以下工厂:
..registerFactory<IShopRepository>((c) => c<ShopRepository>())
..registerFactory<IUserProfileRepository>((c) => c<UserProfileRepository>())
问题是我想为GetUserLocationsUseCase
.
..registerFactory(
(c) => GetUserLocationsUseCase(repository: c<IProfileRepository>()))
如何在代码中注入正确的子类型 IProfileRepository
itIShopRepository
或IUserProfileRepository
?
解决方案
如果你想动态注入,UserProfileRepository
或者ShopProfileRepository
你应该通过它的超类型注册你要使用的那个。
KiwiContainer()
..registerFactory<IProfleRepository>((c) => ShopProfileRepository())
..registerFactory((c) => GetOrderListOfItemsUseCase(
repository: c<IProfleRepository>()))
也可以通过它的超类型获得它,就像在代码片段中一样。