gpt4 book ai didi

Flutter:从 native 代码产生的隔离调用插件时出现 MissingPluginException

转载 作者:行者123 更新时间:2023-12-04 13:50:59 27 4
gpt4 key购买 nike

我正在构建一个 Flutter 应用程序,当设备连接到另一个蓝牙设备时,它能够执行一些操作。这个应用程序应该可以在 Android 和 iOS 上运行,但为了简单起见,我将在这篇文章中关注 Android。此外,无论应用程序是在前台、后台还是被杀死,这都必须有效。
这是应用程序的架构:

  • 我有一个 Android 原生代码 通过 BroadcastReceiver 注册到蓝牙事件.
  • 我按照本教程设置了 Android代码与Flutter代码之间的通信 :https://medium.com/@chetan882777/initiating-calls-to-dart-from-the-native-side-in-the-background-with-flutter-plugin-7d46aed32c47 .
  • 当安卓BroadcastReceiver由蓝牙事件触发,信息被发送到 Flutter 代码(即使应用程序在后台或被杀死)。 A Flutter 隔离创建 处理 flutter 代码。

  • 一切正常。 Flutter 代码被调用,我可以使用 print(data)记录已由 Android 代码提供的数据。
    当我想从隔离中调用任何 Flutter 插件(如 sqflitepackage_info_plus 、...)时,事情变得更加棘手。我每次都会收到此错误:

    [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception:MissingPluginException(No implementation found for method xxx onchannel yyy)


    我知道衍生的隔离不能本地运行 Flutter 插件。有一些帖子( Unable to understand Flutter Isolate workaround for "'Window_sendPlatformMessage' (4 arguments) cannot be found" errorhttps://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 这样的东西真的没用),这应该可以工作。

    关于Flutter:从 native 代码产生的隔离调用插件时出现 MissingPluginException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69462654/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com