问题标签 [flutter-method-channel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
61 浏览

kotlin - 如何在 Kotlin 的方法通道中制作回调/协程?

我正在尝试通过方法通道进行回调以返回数据(因为我会在另一个函数激活后获取数据),但返回变量已经是回调。我应该怎么办?

Kotlin MethodChannel 代码:

0 投票
0 回答
16 浏览

android - WifiManager.WIFI_STATE_CHANGED_ACTION 未触发

语境

我只是想检测何时启用和禁用 wifi 适配器。

问题

当我启用适配器时,我会收到正确的通知。当我禁用适配器时,可能会发生两件事:

  1. 如果我连接到在没有互联网的情况下充当 AP 的专有硬件,我不会收到有关适配器已禁用的通知
  2. 如果我连接到“正常”wifi,我会收到适配器被禁用的通知
  3. 如果我没有连接到 wifi,我会收到适配器被禁用的通知

代码

我在这里遗漏了什么还是这是一种非常奇怪的行为?

Android 11 - 自定义 ROM:dotOS 5.1

0 投票
0 回答
42 浏览

ios - 在(非插件)Flutter 应用程序中执行 IOS 平台通道代码的正确方法?

当使用平台通道在 Flutter 应用程序中编写特定于平台的 IOS 代码时(但不编写插件)...

将所有代码专门放在 AppDelegate 中是标准做法吗?

如果它是一个插件,你会创建一个类并让它扩展 FlutterPlugin ......但我没有这样做。

我看到的示例只是将所有内容都放在 AppDelegate 类中,并让它扩展 FlutterAppDelegate。

您可以将 MethodChannel 通信放在 AppDelegate 之外的其他地方,例如创建一个单独的(非 ui)类吗?

如果是,那么如何?

0 投票
1 回答
54 浏览

android - Flutter MethodChannel 直接分享到 Whatsapp

我应该如何配置 MethodChannel 以便我可以直接将媒体和文本发送到 Whatsapp?

【注意】我没有使用现有的分享包,因为我需要捕获目标收件人。

0 投票
1 回答
149 浏览

flutter - 为什么 MethodChannel.Result.success() 有时会导致 Flutter 超时?

我有一个简单的 Flutter 插件,它通过MethodChannel一些原生 Android 代码进行通信。这是一个简单的示例,插件提供的方法如下所示:

doSomethingImportant()(java) 方法完成后,它通过调用将结果传递给 Flutter:

然后,在测试期间,该方法被这样调用:

这在大多数情况下运行良好。但是,有时测试会因为doSomethingImportant()超时而失败,并且 logcat 会显示以下内容:

现在我想知道什么可能导致超时以及如何防止它。值得注意的是,超时消息总是在result.success()调用后大约 700-800 毫秒出现。

编辑1: 问题是有时未来不会完成,即使result.success()被调用。这只是偶尔发生,但如果发生,超时目的是优雅地退出调用函数。不幸的是,简单地删除超时不是一种选择,因为它会永远阻塞。


编辑 2 - 更多背景信息: 请注意,上面的代码片段doSomethingImportant()_someTestMethod()只是说明方法外观的示例。(除了onSuccess(),这是生产代码的精确副本)。

实际的插件控制蓝牙 Mesh 网络。_someTestMethod()发送和接收数据以验证网状网络和在各个节点上运行的固件是否正在执行它们应该执行的操作。中的逻辑_someTestMethod()如下所示:

  1. 将数据发送到网格中。
  2. 从网格中读取数据。
  3. 验证读取的数据是否与预期结果匹配。

选择该await/timeout()方法是因为每个步骤都取决于上一步的成功完成。将这些调用嵌套在.then()回调中是一种替代方法,但我只是更喜欢从上到下的await/timeout()意大利面条代码而不是嵌套.then()回调。

问题是,MethodChannel.Result.success()在 Android 上时不时地调用它,但 Flutter 并没有完成Future. 如果发生这种情况,Future 将永远保持未完成状态,并且 logcat 也不会提供任何信息。

同样,这种情况只是偶尔发生。大多数时候它工作得很好。

现在的问题是,这里有什么问题?有没有其他方法可以说服Future完成?欢迎任何想法谢谢!

0 投票
1 回答
303 浏览

android - Flutter - 即使应用程序在后台(如警报应用程序)如何在特定时间运行进程

我是在日本使用 Flutter 的软件工程师。
开发一个可以在早上叫醒我的闹钟应用程序,但在执行以下操作时遇到了麻烦。
如果您能帮助我,我将不胜感激。

问题。
我想知道是否有办法在预定时间执行特定进程,即使应用程序被杀死或后台。

详情
我目前正在开发一个在指定时间发送本地通知和自定义音乐的警报应用程序。
我能够安排本地通知在指定时间发送。
但是,我找不到同时在后台运行特定进程的方法。
(这是播放用户选择的特定音乐的过程的图像)

我发现了什么确认可以使用flutter_local_notifications
在每周的指定日期和指定时间发送通知。 (执行)
flutterLocalNotificationsPlugin#zonedSchedule()

然而,在flutter_local_notifications中,并没有监听器本身来接收通知。
(有一个 onSelectNotification,但在用户点击通知栏之前它不起作用。)

库作者说没有监听器来触发这样的通知时间,
所以我决定在这个库中只使用本地通知并寻找另一个库来代替后台处理。
https://github.com/MaikuB/flutter_local_notifications/issues/1201

我发现background_fetchWorkManager特别有用,但我也放弃了使用这些库。
原因是上面两个库只能在15分钟的意义上执行,如下图,由于iOS的限制,我怀疑该过程无法在预期的时间执行。

workManagaer
https://pub.dev/packages/workmanager#customisation-android-only

background_fetch

我认为做到这一点的唯一方法是使用 MethodChannel 为 Flutter 中的每个操作系统编写和执行本机代码。
我想知道是否有一种方法可以在指定的时间执行预定的进程,即使应用程序在 Flutter 中处于 kill 或 background 状态,即使它使用 MethodChannel。

对不起它这么久。请告诉我。
非常感谢

0 投票
0 回答
31 浏览

android - 已终止的 Flutter App 如何接收来自 BroadcastReceiver 的方法通道调用?

我想知道终止的 Flutter App 如何从启动应用程序的 BroadcastReceiver 接收方法通道调用。

https://github.com/k-nakabayashi/flutter_method_channel/blob/main/android/app/src/main/kotlin/com/example/flutter_method_channel/PhoneCallReceiver.kt#L49

Q1:以下 NG 案例会发生什么?我能做什么?

OK 案例:这个正在运行的应用程序可以使 PhoneCallReceiver "PhoneCallChannelCtrl.instance?.sendToFLutter(phoneNumber)"

NG 案例:这个已终止的应用程序无法执行此操作。(这个应用程序可以刚刚启动。

细节:

该应用由 PhoneCallReceiver@booApp 启动,然后 MainActivity@configureFlutterEngine 设置 MethodChannel(由 PhoneCallChannelCtrl@setup 设置)。

Q2(替代):终止的颤振端如何捕捉到这个意图?

0 投票
0 回答
68 浏览

flutter - 使用自定义插件从本机到飞镖的 MethodChannel 回调不起作用

我有一个自定义颤振插件。从 Flutter 应用程序中,我在通道上调用 setMethodCallHandler,用于在本机上调用方法。Flutter 到本地通信与响应一起工作。但是反过来是行不通的,在本机端调用方法。本机尝试调用方法,但无法找到回调,因为响应始终“未实现”

通道是在 Flutter 插件中定义的,我在 app 初始化时设置了 methodHandler。

VpvpBaseModulePlugin.dart

颤振应用

本地调用:

从flutter应用程序的本机模块调用调用有效..但它们不适用于插件的本机

0 投票
0 回答
23 浏览

android - 如何添加一个 android 活动来颤振?

我正在尝试在 Flutter 应用程序中托管本机内容。我要托管的组件是 TWA(受信任的 Web 活动)

由于这是一项活动,因此我无法使用Flutter 团队提供的此文档。本文档需要视图和 AFAIK,活动不是视图。

到目前为止,我已经能够使用方法通道打开 TWA 并且它可以工作,但是当我尝试打开或关闭 TWA 时它非常滞后。

是否可以在颤振中添加 TWA?

0 投票
0 回答
17 浏览

flutter - 如何将来自 Android 的 ByteBuffer 与加载到 Flutter 应用程序中的图像合并

我正在创建一个使用Google ML Kit Image Segmentation using的应用程序MethodChannel,它返回 a SegmentationMask,它本质上是一个ByteBuffer。我已经能够成功地调用MethodChannelSegmentationMask作为ByteBufferJava 通道返回。这需要返回到 Flutter 以应用于初始输入图像。

所以,本质上,我现在需要将它应用ByteBuffer到 Flutter Image- 整体流程是 -

  1. 将 Flutter 加载Image为字节数组
  2. 在 中执行分割MethodChannel,返回ByteArray
  3. 合并以上两个数组,生成最终图像

如何将获得的字节掩码应用于ByteArrayFlutter 中的 dart 字节数组 - 以修改初始图像?

用于处理的 Android Java 代码MethodChannel-