【发布时间】:2021-08-15 07:13:57
【问题描述】:
我们正在使用 get_it^7.2.0 和 workmanager^0.4.1 进行依赖注入 (get_it) 和后台任务 (workmanager) 的调度。
想要在workmanager.executeTask()函数中注册类后出现问题。
final sl = GetIt.instance;
...
sl.registerLazySingleton<BackgroundRunner>(() => BackgroundRunnerImpl(tasks: sl()));
...
注册后,这一切都发生在异步函数中,我想要通过调用对象:
void initializeBackgroundTask() {
Workmanager().initialize(callbackDispatcher, isInDebugMode: false);
Workmanager().registerPeriodicTask("1", "simplePeriodicTask",
frequency: Duration(minutes: 45), initialDelay: Duration(seconds: 10));
}
void callbackDispatcher() {
BackgroundRunner backgroundRunner = di.sl.get<BackgroundRunner>();
Workmanager().executeTask((task, inputData) {
// Does Workload
backgroundRunner.runBackground();
return Future.value(true);
});
}
每当 Workmanager 调用 callbackDispatcher 时,我都会收到以下异常。
E/flutter ( 6388): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: 'package:get_it/get_it_impl.dart': Failed assertion: line 372 pos 7: 'instanceFactory != null': Object/factory with type BackgroundRunner is not registered inside GetIt. E/flutter ( 6388): (Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance; E/flutter ( 6388): Did you forget to register it?)
我在哪里犯错了?
【问题讨论】:
标签: flutter