用途:在 Flutter 项目里用 get_it 统一管理依赖注入,把 DataSource、Repository、UseCase、ViewModel 的注册集中到单一入口 lib/core/di/di_setup.dart 的 diSetup() 函数中,不按功能分散注册。
主要能力与规则:注册顺序按依赖图自底向上,依次为 DataSource → Repository → UseCase → ViewModel;在 main() 中于 runApp() 之前必须调用 diSetup()。DataSource、Repository、UseCase 用 registerSingleton(以接口类型注册,避免直接引用实现类),ViewModel 一律用 registerFactory,防止多屏共享同一状态。getIt<T>() 只在 Root 组件的 build() 中调用,Screen 与公共组件只接收 state 和 onAction,保证可预览与可测试。
必要用法:入口示例为 final getIt = GetIt.instance; 以及 void diSetup() {...};main 中先 diSetup() 再 runApp(const MyApp())。构造参数用 getIt() 解出,需显式指定泛型时写 getIt<Foo>()。需要工厂方法或命名参数时改用 lambda 形式,如 getIt.registerSingleton<HttpClient>(HttpClientFactory.create(getIt()))。若延迟创建可用 registerLazySingleton。
适用场景与新增功能检查:新增 feature 时依次确认 DataSource 接口已定义、按接口类型注册实现、注册 Repository、注册无状态 UseCase、ViewModel 用 registerFactory、仅在 Root 组件取出 ViewModel。
限制与反模式:不要在 Screen、公共组件或深层组件树中调用 getIt<T>();不要把 ViewModel 注册为单例;不要在 diSetup() 之外注册;不要按实现类类型从 getIt 取出对象,应按接口取出以便替换实现。资料未提供该技能的安装方式、版本要求、收费与许可信息。