4

我有类似的东西:

@injectable
class SettingsBloc {
  final Event event;

  SettingsBloc(@factoryParam this.event);
}

当我从我的代码中调用它时,我传递了工厂参数,例如: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>(),
          ));

所以,工厂参数没有通过,一切都在运行时崩溃。我怎样才能解决这个问题?

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

gh.factoryParam<HotelsBloc, Event, dynamic>(
          (event, _) => HotelsBloc(
                event,
                get<SettingsBloc>(param1: event),
              ));

而不是这个:

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

1 回答 1

0

代码按预期工作

 print(getIt<SettingsBloc>().event);
  // prints null
  print(getIt<SettingsBloc>(param1: Event()).event);
  // prints Instance of 'Event'

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

于 2020-12-08T07:31:58.773 回答