Как отправить данные на главный изолятор из изолята workmananger?

Моя проблема в том, что Flutter Hive нельзя открыть из нескольких изолятов. Поэтому я хочу, чтобы данные, полученные в задаче workmananger, были отправлены в главный изолятор, где открывается ящик улья, и изменили его там, чтобы избежать его повреждения. Я должен учитывать, когда приложение живо, а когда нет => например, когда приложение не живо, я редактирую файл куста напрямую, поскольку он будет открыт только в изолированном рабочем месте, тогда как если приложение не живо, я отправить данные в главный изолятор и отредактировать файл улья. Моя проблема в том, что я не знаю, как отслеживать жизненный цикл в рамках задачи workmanager, и я не знаю, как отправить данные в основной изолятор. Какие-либо обходные пути или решения проблемы или как кодировать вышеперечисленное? Заранее спасибо.

1 ответ

Решение

После некоторых исследований решение выглядит следующим образом:

Сначала вы регистрируете порт при инициализации основного изолята следующим образом:

void listenToUpdatesFromWorkManager(String name) { var port = ReceivePort(); IsolateNameServer.registerPortWithName(port.sendPort, name); }

Вы даете ему уникальное имя, чтобы отличить его от любых других открытых изолятов, например:

SendPort sendPort = IsolateNameServer.lookupPortByName(name);

Другие вопросы по тегам