我有个问题。在我的项目中,我有一些单例课程。
- DioMethod(一些 api 配置),
- 存储库(连接ApiProvider和 BLoc 类),
- ApiProvider(调用 api => 获取数据 => 传递给Repository),
- 一些 BloC 类,例如MoviesBloc、MovieDetailBloc ……我为每个 Screen 创建了一个 BLoC 类。
并且在$initGetIt处初始化全部相同。
_i1.GetIt $initGetIt(_i1.GetIt get,
{String? environment, _i2.EnvironmentFilter? environmentFilter}) {
final gh = _i2.GetItHelper(get, environment, environmentFilter);
gh.singleton<_i3.DioConfig>(_i3.DioConfig());
gh.singleton<_i4.DioMethod>(_i4.DioMethod(get<_i3.DioConfig>()));
gh.singleton<_i5.MovieApiProvider>(
_i5.MovieApiProvider(get<_i4.DioMethod>()));
gh.singleton<_i6.Repository>(_i6.Repository());
gh.lazySingleton<_i7.MovieDetailBloc>(
() => _i7.MovieDetailBloc(get<_i6.Repository>()),
dispose: (i) => i.dispose());
gh.lazySingleton<_i8.MoviesBloc>(() => _i8.MoviesBloc(get<_i6.Repository>()),
dispose: (i) => i.dispose());
return get;
}
我想如果我扩展我的项目,我会遇到一些问题。
- 这个函数太大了,我们有太多的单例仍然存在于应用程序中。
- 打开app的时候需要初始化很多Object => 可以延迟app吗?
- 如何创建一个只有在访问屏幕时才活着并在弹出此屏幕后销毁的单例。
谢谢你的回答!