首页 > 解决方案 > 通过 MethodChannel 传递 Isolate/ControlPort

问题描述

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

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

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

据我所知,这样做的唯一方法是要求本地人成为双方之间的经纪人(将任务发送给本地人,然后本地人将其发送回另一方),但是对于一个颤振来说似乎很麻烦和另一个颤振说话。

标签: flutterdartflutter-plugindart-isolates

解决方案


解决方案是IsolateNameServer

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


推荐阅读