как получить доступ к одноэлементным объектам внутри обратного вызова Workmanager.executeTask с помощью flutter-workmanager
Создание
List<String> mainList
глобально и добавив один элемент в
main()
функция. Но внутри функции обратного вызова Workmanager.executeTask lenth mainList по-прежнему равен 0. Даже hashCode mainList отличается.
- Почему это происходит?
- Как сделать mainList как Singleton?
- Пытался распечатать
Isolate.current.debugName
, это всегда «главный».
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());
}
1 ответ
В
ListenableWorker.startWork()
новый экземпляр FlutterEngin создается каждый раз и при выполнении
Workmanager.executeTask
с
callback
.
Так что нет возможности использовать одноэлементные объекты.