当前位置: 首页 > news >正文

如何使用Flutter与OpenHarmony通信 FlutterChannel

如何使用Flutter与OpenHarmony通信 FlutterChannel

本文介绍在Flutter OpenHarmony化工程中,如何使用 Flutter Channel 能力。

以下是关键实现代码,完整的demo请参考channel_demo

MethodChannel

dart代码:

// 创建实例final_platform =constMethodChannel('samples.flutter.dev/battery');// 调用方法 getBatteryLevelfinalresult = await _platform.invokeMethod<int>('getBatteryLevel');

ets代码:

onAttachedToEngine(binding: FlutterPluginBinding):void{ let that =this;// 创建实例this.channel =newMethodChannel(binding.getBinaryMessenger(),"samples.flutter.dev/battery");// 设置回调,调用具体的实现this.channel.setMethodCallHandler({ onMethodCall(call: MethodCall, result: MethodResult) {switch(call.method) {case"getBatteryLevel": that.api.getBatteryLevel(result);break;default: result.notImplemented();break; } } }) }

BasicMessageChannel

dart代码:

intcount =0;// 创建实例final_basicChannel =constBasicMessageChannel("samples.flutter.dev/basic_channel", StandardMessageCodec());// 调用方法,获取平台侧的返回值Stringresult =await_basicChannel.send(++count)asString;

ets代码:

onAttachedToEngine(binding: FlutterPluginBinding):void{// 创建实例this.basicChannel =newBasicMessageChannel(binding.getBinaryMessenger(),"samples.flutter.dev/basic_channel",newStandardMessageCodec());// 设置回调,调用具体的实现this.basicChannel.setMessageHandler({ onMessage(message:Any, reply: Reply<Any>) { Log.i(TAG,"message="+ message);if(message %2==0) { reply.reply("run with if case."); }else{ reply.reply("run with else case"); } } }) }

EventChannel

dart代码:

// 创建实例final _eventChannel = constEventChannel('samples.flutter.dev/event_channel');// 注册事件监听_eventChannel.receiveBroadcastStream().listen((event) { setState((){ message ="EventChannel event=$event"; }); });

ets代码:

privateeventSink?: EventSink; onAttachedToEngine(binding: FlutterPluginBinding):void{letthat = this;// 创建实例this.eventChannel =newEventChannel(binding.getBinaryMessenger(),"samples.flutter.dev/event_channel");// 设置回调,获取EventSinkthis.eventChannel.setStreamHandler({ onListen(args: Any, events: EventSink):void{ that.eventSink = events;Log.i(TAG,"onListen: "+ args); }, onCancel(args: Any):void{ that.eventSink = undefined;Log.i(TAG,"onCancel: "+ args); } }); }// ...// 使用 EventSink 发送数据后,dart断的事件监听回调会收到发送的数据。that.eventSink?.success("Success at "+newDate());
http://www.jsqmd.com/news/1024939/

相关文章:

  • 2026年 废旧光伏板热解炉网带推荐榜单:耐用耐高温与高效回收口碑之选 - 品牌发掘
  • 2026报考必看:高考择校怎么选?毕业后好找工作是重点 - 品牌2026
  • 沈阳公安备案名表回收,2026排行榜,行业规范起草单位测评 - 禹竞
  • 抖音直播数据采集完整指南:3步实现实时弹幕监控与分析
  • 邓柏良 “疏肝化瘀三联疗法”:中医治疗肝癌合并顽固性腹水的临床实践
  • PMDARIMA股票预测:自动化ARIMA建模的工程实践指南
  • 零基础拿捏交互式数据大屏!筛选器全局联动+蓝图数据流全流程爆肝详解
  • 2026翡翠回收商户横向测评榜单:合扬实力遥遥领先,六大头部品牌优劣详解 - 开心测评
  • 一台电暖桌的“反季”生意:焱魔方去年卖近18万台,今年备货已抢跑 - 资讯焦点
  • 如何用Python构建抖音直播数据实时监控系统
  • 物理信息神经算子(PINO):融合物理规律与深度学习的创新解决方案
  • 走遍南京全城辖区,2026 高口碑黄金回收门店实力汇总 - 奢侈品回收评测
  • 2026报考必看:一文看懂:西南交大工科实力强不强,王牌专业有哪些 - 品牌2026
  • 2026年度宁波成人学历提升机构综合实力测评:三强揭晓,择校不踩雷
  • 洛雪音乐音源终极指南:三步搞定全网无损音乐自由
  • 2026年618史诗级降价潮来袭!6月17日20点京东准时开抢,最后28小时空调家电手机国补叠加全年较低价,错过再等一整年! - 资讯焦点
  • 2026年6月耐磨风机推荐指南 - 多才菠萝
  • 重庆首饰回收选合扬,金银首饰高价回收 - 奢侈品交易观察员
  • 田蜜蜜婚恋收费标准解析 会员分享签约体验 - 资讯焦点
  • 商用面食加工三个核心需求 盛毅食品机械面条机适配分析
  • 2026 佛山 LV 包包回收指南|持证鉴定保真溯源,本地 5 家回收平台横向对比 - 奢侈品回收测评
  • 郑州一站式企业服务
  • 山东试压仪企业实力排行:5家核心厂商实测对比 - 奔跑123
  • 如何快速配置MAA明日方舟智能助手:面向新手的完整教程
  • 5分钟快速上手PoeCharm:流放之路玩家的免费中文角色构建终极指南
  • 2026中山汽车贴膜测评笔记:7家门店实测全解析 - 资讯焦点
  • 口碑好的带式压滤机盘点:6项指标实测 - 速递信息
  • 旋风铣十大品牌实力盘点:腾创机械凭核心技术跻身前列 - 品牌推荐大师
  • 2026年苯酚产业链深度洞察:从源头到应用的原料格局与优质供应商解析 - 品牌发掘
  • 2026南通普通人变现黄金怕被坑,如何选店以及避坑+四家口碑老店地址推荐 - 生活测评君