【问题标题】:Passing Isolate/ControlPort through MethodChannel通过 MethodChannel 传递 Isolate/ControlPort
【发布时间】:2021-03-21 13:05:10
【问题描述】:

在我们的 Flutter 应用中,我们正在做一些后台处理。为此,我们需要在本机代码中创建新的颤振隔离,以便我们可以在活动未打开时运行代码,基于以下指南:https://medium.com/@chetan882777/initiating-calls-to-dart-from-the-native-side-in-the-background-with-flutter-plugin-7d46aed32c47

现在,为了不重复代码并且不导致任何并发问题,我们还希望能够从主 Flutter UI 隔离中访问该后台处理隔离。这样我们就可以从原生代码和 Flutter UI 代码开始处理。

但是,本地似乎没有办法将此 Isolate / ControlPort 传递到主 UI 端,以便与它进行通信。有没有办法实现这一点(从本机和 UI 端与同一个 Isolate 进行通信)?

据我所知,这样做的唯一方法是要求 native 成为双方之间的代理(将任务发送给 native,然后 native 将其发送回另一方),但这似乎很麻烦一个颤振与另一个颤振交谈。

【问题讨论】:

    标签: flutter dart flutter-plugin dart-isolates


    【解决方案1】:

    解决方案是IsolateNameServer

    一方可以调用IsolateNameServer.registerPortWithName(),然后另一方可以通过IsolateNameServer.lookupPortByName()向该端口发送消息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2013-04-21
      • 2011-08-21
      相关资源
      最近更新 更多