MethodChannel、EventChannel 和 BasicMessageChannel 之间有什么区别?

2024-02-04

在 Flutter 中,分为三种类型平台渠道,我想知道它们之间的区别。


这些通道用于在本机代码(插件或项目内的本机代码)和 Flutter 框架之间进行通信。

方法通道

A MethodChannel是用来 ”使用以下方式与平台插件进行通信异步方法调用 https://docs.flutter.io/flutter/services/MethodChannel-class.html”。这意味着您使用该渠道来调用方法 https://docs.flutter.io/flutter/services/MethodChannel/invokeMethod.html在本机端,可以返回一个值,反之亦然。
您可以例如调用以这种方式检索设备名称的方法。

事件通道

An EventChannel https://docs.flutter.io/flutter/services/EventChannel-class.html习惯于stream数据。这导致有一个Stream https://docs.flutter.io/flutter/services/EventChannel/receiveBroadcastStream.html on the Dart事物的一侧并能够从本机一侧提供该流。
如果您想在每次特定的时间发送数据,这非常有用event发生,例如当设备的 wifi 连接发生变化时。

基本消息通道

这可能不是您想要使用的东西。BasicMessageChannel用于使用以下方式对消息进行编码和解码指定编解码器 https://docs.flutter.io/flutter/services/MessageCodec-class.html.
一个例子是使用 JSON 或二进制数据。它只是一个更简单的版本,因为您的数据具有明确的类型(编解码器),并且您不会发送多个参数等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MethodChannel、EventChannel 和 BasicMessageChannel 之间有什么区别? 的相关文章

随机推荐

  • 学说 2 命令行打印 Cygwin 配置

    我正在尝试在我的项目中使用 Doctrine 2 但是当我尝试访问命令行以从数据库导入实体以生成文件时 它会打印以下代码 vendor bin doctrine dir d 0 cd d cd doctrine orm bin pwd Se
  • 手动标记的 Span 中带有 ENT_TYPE 的模式不起作用

    作为实现此目的的替代方法 IN 属性中具有多项条目的模式 https stackoverflow com questions 61975312 patterns with multi terms entries in the in attr
  • 内部矩阵尺寸误差必须符合绘图时的误差

    我正在尝试绘制函数 f x x e x cos x 从 0 到 2 pi 我尝试过运行 x 0 pi 100 2 pi y x exp x cos x 然而 每次我尝试设置 y Matlab 向我抛出 使用 时出错 并表示内部矩阵维度必须一
  • Hibernate 中的 UTF-8

    当我从 MySql 数据库的查询中检索信息时遇到问题 如下所示 Je b tirai UTF 8 字符集和 Hibernate 或 MySql 存在错误 请问我该如何解决这个问题 这是我的休眠设置
  • 对连接表进行序列化查询

    我正在尝试使用sequelize 查询连接表 这是模型 db client belongsToMany db user through db clientUser onDelete cascade db user belongsToMany
  • 浏览器在动画/移动元素上未触发鼠标悬停/鼠标输入

    如果您有一个具有移动动画的元素 mouseover and mouseenter除非用户移动鼠标 否则不会触发事件 为了演示 请使用 jQuery 尝试下面的代码块 如果您将鼠标放在移动的 div 前面 这样当 div 经过时您就不会移动鼠
  • MySql Xml 函数的性能?

    我对新的感到非常兴奋Mysql XML 函数 http dev mysql com doc refman 5 1 en xml functions html function updatexml 现在我终于可以在我的老式关系数据库中嵌入 面
  • Flurry Analytics 在 Android 模拟器中“运行”时崩溃,但在模拟器中“调试”时不会崩溃

    根据标题 我有一个应用程序 它使用乱舞分析 http www flurry com flurry analytics htmlAndroid 的库 我已经关注了他们的基本步骤 http support flurry com index ph
  • 在 Windows 桌面上制作 3D 对象动画

    我需要在 Windows 桌面上绘制用户可以与之交互的 3D 对象 例如狗 并为其设置动画 用户交互假设点击 显示 不规则形状 对话框以供用户输入等 您知道实现这一目标的具体方法吗 我想我有几种选择 有什么建议吗 哪一种最好 最简单 WPF
  • Microsoft OLE DB Provider for SQL Server 错误“80040e14”“=”附近的语法不正确

    当我尝试使用以下代码从数据库检索数据时 出现此错误 有人可以帮忙吗 set rs Server CreateObject ADODB recordset sql SELECT from COMPANY WHERE COMPANY ID Re
  • 如何使用 pandas 绘制阴影条?

    我试图通过填充图案而不是 仅 颜色来实现差异化 我如何使用熊猫做到这一点 在 matplotlib 中可以通过传递hatch所讨论的可选参数here https stackoverflow com questions 14279344 ho
  • Python 中的条件评估调试语句

    Python 有几种打印 trace 输出的方法 print import logging stdout write可用于打印调试信息 但它们都有一个缺点 即使记录器的阈值太高或流关闭 Python 仍会评估打印语句的参数 严格评估 这可能
  • 将一些 LISP 转换为 C#

    我正在阅读保罗 格雷厄姆的垃圾邮件计划 http www paulgraham com spam html想要更好地理解它 但我的 LISP 真的很生疏 他有一段计算概率的代码片段 let g 2 or gethash word good
  • R 中 glmnet 图的图例标签错误

    我修改了这篇文章中的函数 在 R 中的 glmnet 图中的曲线上添加标签 https stackoverflow com questions 30560689 adding labels on curves in glmnet plot
  • Windows 进程的内存映射是什么样的?

    这可能是一个重复的问题 我想知道windows进程的内存映射是什么样的 我正在寻找细节 请提供博客 文章和其他相关文献的链接 我总是喜欢能够真正看到事物 而不仅仅是阅读理论 事实证明 根据这篇博文 http www nynaeve net
  • 更改seabornpairplot对角线颜色

    当使用sns pairplot我有这个 import seaborn as sns iris sns load dataset iris g sns pairplot iris markers kind reg diag kind kde
  • 将 Char 转换为 AnsiChar 或 WideChar (Delphi)

    我正在将一个非常旧的 10 多年 应用程序升级到最新的 Delphi XE 我不断遇到很多错误 Incompatible types WideChar and AnsiChar 我只是将 char 转换为正确的类型 例如 AWideChar
  • IIS下的NetworkService有空的AppData路径

    在 Windows 8 上使用 IIS 8 我设置了一个以以下身份运行的应用程序池Network Service 在页面的代码中 我调用 Environment GetFolderPath Environment SpecialFolder
  • Leaflet自定义图标标记旋转一个角度,变换样式冲突

    我通过以下演示重现了这个问题 http jsfiddle net baoqger deL0yuvg 9 http jsfiddle net baoqger deL0yuvg 9 在我的项目中 我有一个自定义图标标记 我想在某些情况下旋转图标
  • MethodChannel、EventChannel 和 BasicMessageChannel 之间有什么区别?

    在 Flutter 中 分为三种类型平台渠道 我想知道它们之间的区别 这些通道用于在本机代码 插件或项目内的本机代码 和 Flutter 框架之间进行通信 方法通道 A MethodChannel是用来 使用以下方式与平台插件进行通信异步方