【发布时间】:2021-12-06 05:33:45
【问题描述】:
我有一个问题。在我的项目中,我有一些单例课程。
- DioMethod(一些 api 配置),
- Repository(连接 ApiProvider 和 BLoc 类),
- ApiProvider(调用 api => 获取数据 => 传递给 Repository),
- 一些 BloC 类,例如 MoviesBloc、MovieDetailBloc、..我为每个 Screen 创建了一个 BLoC 类。
和 $initGetIt 处的 init all 相同。
_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;
}
我认为如果我扩展我的项目,我会遇到一些问题。
- 这个函数太大了,我们有太多的单例仍然存在于应用程序中。
- 我们在打开应用的时候需要初始化很多Object => 可以延迟应用吗?
- 如何创建一个只有在访问屏幕时才存活并在弹出此屏幕后销毁的单例。
感谢您的回答!
【问题讨论】:
标签: flutter dart bloc injectable