有没有办法传递工厂参数?

Ale*_*kas 7 dependency-injection injectable dart flutter

我有类似的东西:

@injectable
class SettingsBloc {
  final Event event;

  SettingsBloc(@factoryParam this.event);
}
Run Code Online (Sandbox Code Playgroud)

当我从代码中调用它时,我传递工厂参数,例如:getIt<SettingsBloc>(param1: Event())

但是,当 SettingsBloc 是某些东西的依赖项时,调用是自动生成的,如下所示:get<SettingsBloc>()

生成的代码:

gh.factoryParam<SettingsBloc, Event, dynamic>(
      (event, _) => SettingsBloc(event));

gh.factoryParam<HotelsBloc, Event, dynamic>(
      (event, _) => HotelsBloc(
            event,
            get<SettingsBloc>(),
          ));
Run Code Online (Sandbox Code Playgroud)

因此,工厂参数未传递,并且所有内容都会在运行时崩溃。我怎样才能解决这个问题?

PS 长话短说:应该有一种方法来生成此代码:

gh.factoryParam<HotelsBloc, Event, dynamic>(
          (event, _) => HotelsBloc(
                event,
                get<SettingsBloc>(param1: event),
              ));
Run Code Online (Sandbox Code Playgroud)

而不是这个:

gh.factoryParam<HotelsBloc, Event, dynamic>(
          (event, _) => HotelsBloc(
                event,
                get<SettingsBloc>(),
              ));
Run Code Online (Sandbox Code Playgroud)

小智 0

代码按预期工作

 print(getIt<SettingsBloc>().event);
  // prints null
  print(getIt<SettingsBloc>(param1: Event()).event);
  // prints Instance of 'Event'
Run Code Online (Sandbox Code Playgroud)

您确定在使用 getIt 之前初始化它吗?