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

qeeaahzv  于 2022-12-24  发布在  Flutter
关注(0)|答案(2)|浏览(115)

我有类似的东西:

@injectable
class SettingsBloc {
  final Event event;

  SettingsBloc(@factoryParam this.event);
}

当我从代码中调用它时,我传递如下工厂参数:第一个月
但是当SettingsBloc是某个对象的依赖项时,call是自动生成的,如下所示:get<SettingsBloc>()
生成代码:

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

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

所以,工厂参数没有被传递,所有的东西都在运行时崩溃。我该如何修复这个问题?
附注:长话短说:应该有一种方法来生成这个代码:

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

而不是这个:

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

qxgroojn1#

代码按预期工作

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

您确定要在使用getIt之前对其进行初始化吗?

643ylb08

643ylb082#

根据我对向内部依赖项传递参数的理解,您应该为依赖SettingsBloc的类创建一个Module。

@module
abstract class HotelsBlocModule {
  HotelsBloc createHotelsBloc(
    @factoryParam Event event,
  ) => HotelsBloc (
         get<SettingsBloc>(
           param1: event,
         ),
       );
}

此外,您必须从HotelsBloc中删除@injectable,因为模块现在处理HotelsBloc的创建。

class HotelsBloc {
  final SettingsBloc _settingsBloc;

  const HotelsBloc(
    this._settingsBloc,
  );

  ...
}

文件:Module class|lib documentation

相关问题