首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法将一个只有在运行时才知道的参数传递给由getit依赖注入创建的对象?

是的,可以通过使用工厂方法或构造函数来将运行时参数传递给由getit依赖注入创建的对象。

  1. 工厂方法:可以创建一个工厂方法,该方法接受运行时参数并返回一个已经注入了所需依赖的对象。在getit中注册该工厂方法,以便在需要时调用它来创建对象。这样,每次创建对象时都可以传递不同的参数。

示例代码:

代码语言:txt
复制
class MyService {
  final String runtimeParam;

  MyService(this.runtimeParam);
}

void main() {
  final getIt = GetIt.instance;

  getIt.registerFactory<MyService>((getIt) => MyService(getIt()));

  // 注册运行时参数
  getIt.registerLazySingleton<String>(() => 'Runtime Parameter');

  // 获取对象
  final myService = getIt<MyService>();

  print(myService.runtimeParam); // 输出:Runtime Parameter
}
  1. 构造函数:可以在对象的构造函数中接受运行时参数,并在创建对象时传递该参数。在getit中注册该对象时,getit会自动解析构造函数并传递所需的参数。

示例代码:

代码语言:txt
复制
class MyService {
  final String runtimeParam;

  MyService(this.runtimeParam);
}

void main() {
  final getIt = GetIt.instance;

  // 注册对象并传递运行时参数
  getIt.registerLazySingleton<MyService>(() => MyService('Runtime Parameter'));

  // 获取对象
  final myService = getIt<MyService>();

  print(myService.runtimeParam); // 输出:Runtime Parameter
}

无论是使用工厂方法还是构造函数,都可以将运行时参数传递给由getit依赖注入创建的对象。这样可以根据不同的运行时需求动态地配置对象的依赖。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券