В нашем приложении флаттера мы выполняем некоторую фоновую обработку. Для этого нам нужно создать новый флаттер-изолят в нашем собственном коде, чтобы мы могли запускать код, когда активность не открыта, на основе этого руководства: https://medium.com/@chetan882777/initiating-calls-to-dart. -с-родной-стороны-в-фоне-с-флуттер-плагином-7d46aed32c47
Теперь, чтобы не дублировать код и не вызывать проблем с параллелизмом, мы также хотели бы иметь доступ к этой изоляции фоновой обработки от основной изоляции пользовательского интерфейса флаттера. Таким образом, мы можем начать обработку как с собственного кода, так и с кода пользовательского интерфейса флаттера.
Тем не менее, кажется, что у нативного нет способа передать этот Isolate / ControlPort на сторону основного пользовательского интерфейса, чтобы он мог с ним взаимодействовать. Есть ли способ добиться этого (общаться с одним и тем же изолятом как со стороны нативного, так и со стороны пользовательского интерфейса)?
Из того, что я вижу, единственный способ сделать это потребует, чтобы нативный был посредником между двумя сторонами (отправьте задачу нативному, а затем нативный отправляет его обратно на другую сторону), но это похоже на много хлопот для одного флаттера разговаривая с другим флаттером.
Решением этой проблемы является IsolateNameServer.
Одна сторона может звонить IsolateNameServer.registerPortWithName()
, а другая сторона может затем отправлять сообщения на этот порт через IsolateNameServer.lookupPortByName()