首页 > 解决方案 > 在 Flutter 中使用 Kiwi 选择注入依赖项

问题描述

我有以下代码:

KiwiContainer()
      ..registerFactory((c) => GetOrderListOfItemsUseCase(
          repository: c<ShopRepository>()))

这里的问题是需要一个从其扩展GetOrderListOfItemsUseCase的实例。IProfileRepositoryShopProfileRepository

注意IProfleRepositoryIUserProfileRepository和扩展IShopProfileRepository

更新:我有以下工厂:

..registerFactory<IShopRepository>((c) => c<ShopRepository>())
..registerFactory<IUserProfileRepository>((c) => c<UserProfileRepository>())

问题是我想为GetUserLocationsUseCase.

..registerFactory(
          (c) => GetUserLocationsUseCase(repository: c<IProfileRepository>()))

如何在代码中注入正确的子类型 IProfileRepositoryitIShopRepositoryIUserProfileRepository

标签: flutterdartdependency-injectionkiwi

解决方案


如果你想动态注入,UserProfileRepository或者ShopProfileRepository你应该通过它的超类型注册你要使用的那个。

KiwiContainer()
      ..registerFactory<IProfleRepository>((c) => ShopProfileRepository())
      ..registerFactory((c) => GetOrderListOfItemsUseCase(
          repository: c<IProfleRepository>()))

也可以通过它的超类型获得它,就像在代码片段中一样。


推荐阅读