我使用了bloc和repository pattern
。需要根据计划在后台执行代码,为此我使用了workmanager。问题是workmanager
是在单独的方法中执行的,该方法是在main
方法之外初始化的,并且它不了解上下文或下面的代码(如MyApp
)
@pragma('vm:entry-point')
void callbackDispatcher() {
Workmanager().executeTask((taskName, inputData) {
//How i can access bloc or repository from here?
return Future.value(true);
});
}
void main() async {
Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
Workmanager().registerPeriodicTask('uniqueName', 'taskName',
constraints: Constraints(
networkType: NetworkType.connected,
requiresBatteryNotLow: true,
),
frequency: const Duration(minutes: 5));
}
Workmanager
是在main
方法的最开始初始化的,在runApp MyApp
之前,它没有上下文,我的存储库和块甚至还没有创建,我不知道如何从工作管理器访问块。
1条答案
按热度按时间8yoxcaq71#
您可以在注册定期任务时将repository和bloc的示例作为输入数据传递,然后在callbackDispatcher方法中访问它们:
您还可以为存储库和块类使用单例模式: