Val*_*tin 5 dart-isolates flutter flutter-plugin
我正在构建一个 Flutter 应用程序,当设备连接到另一个蓝牙设备时,该应用程序能够执行一些操作。这个应用程序应该可以在 Android 和 iOS 上运行,但为了简单起见,我在这篇文章中将重点关注 Android。此外,无论应用程序是在前台、后台还是被杀死,这都必须有效。
以下是该应用程序的架构:
BroadcastReceiver.BroadcastReceiver被蓝牙事件触发时,信息会发送到 Flutter 代码(即使应用程序处于后台或被杀死)。创建 Flutter 隔离来处理 Flutter 代码。一切都运转良好。Flutter 代码被调用,我可以用来print(data)记录 Android 代码提供的数据。
当我想从隔离中调用任何 Flutter 插件(如sqflite、package_info_plus、 ...)时,事情变得更加棘手。我每次都会收到此错误:
[错误:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:MissingPluginException(在通道 yyy 上找不到方法 xxx 的实现)
据我了解,生成的隔离无法本机运行 Flutter 插件。有一些帖子(无法理解“找不到‘Window_sendPlatformMessage’(4 个参数)”错误的 Flutter Isolate 解决方法,https://github.com/flutter/flutter/issues/13937)解释了如何创建可以使用解决方法或https://pub.dev/packages/flutter_isolate等插件运行 Flutter 插件。但是,我无法使用此包创建隔离,因为隔离是从 Android 代码创建的。
你们中的一个人能告诉我如何实现这一目标吗?有没有办法从本机代码创建的隔离中使用 Flutter 插件?
预先非常感谢
听起来您创建 Flutter 隔离的方式可能与您的目标不兼容。有一些解决方案可以将 Flutter 与原生 Android/iOS 项目集成,例如flutter_boost(免责声明:我没有尝试过,不确定好不好;您可能还会找到许多其他替代方案,这只是一个示例)。您可以使用它来创建 Flutter 环境。由于上面的解决方案允许一些 Android 代码打开一个新的普通 Flutter 页面,并且该页面中的 Flutter 代码可以执行任何操作(当然包括调用本机 - 否则像 flutter_boost 这样的东西真的没用),所以这应该可行。
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |