如何使用 flutter-workmanager 在 Workmanager.executeTask 的回调中访问单例对象

how to access singleton objects inside Workmanager.executeTask's callback using flutter-workmanager

正在全局创建 List<String> mainList 并在 main() 函数中添加一项。但是在Workmanager.executeTask的回调里面,mainList的lenth还是0。连mainList的hashCode都不一样了。

List<String> mainList=[];
void callbackDispatcher() {
  Workmanager.executeTask((task, inputData) {
    print("mainList.length=${mainList.length}"); // always length is 0
    print("Isolate.current.debugName = ${Isolate.current.debugName}");
    return Future.value(true);
  });
}

void main() {
  Workmanager.initialize(
    callbackDispatcher,
    isInDebugMode: true,
  );
  mainList.add("String1");
  print("mainList.length=${mainList.length}"); // length is 1
  print("Isolate.current.debugName = ${Isolate.current.debugName}");
  Workmanager.registerPeriodicTask("1", "simpleTask");
  runApp(MyApp());
}

ListenableWorker.startWork()中,每次都会创建一个新的FlutterEngin实例并执行Workmanager.executeTaskcallback

所以无法使用单例对象。

BackgroundWorker.kt