当前位置: 首页 > 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.zskr.cn/news/1536808.html

相关文章:

  • 抖音直播数据采集完整指南:3步实现实时弹幕监控与分析
  • 2026年 废旧光伏板热解炉网带推荐榜单:耐用耐高温与高效回收口碑之选 - 品牌发掘
  • 2026翡翠回收商户横向测评榜单:合扬实力遥遥领先,六大头部品牌优劣详解 - 开心测评
  • 如何用Python构建抖音直播数据实时监控系统
  • 2026报考必看:一文看懂:西南交大工科实力强不强,王牌专业有哪些 - 品牌2026
  • 2026 佛山 LV 包包回收指南|持证鉴定保真溯源,本地 5 家回收平台横向对比 - 奢侈品回收测评
  • 郑州一站式企业服务
  • 哈尔滨上门回收劳力士欧米茄,鉴定师持证上门更安心 - 奢侈品交易观察员
  • 2026 福州名表回收对比|帝舵碧湾 vs 浪琴康卡斯,性价比与保值率 - 奢侈品回收评测
  • 2026南通普通人变现黄金怕被坑,如何选店以及避坑+四家口碑老店地址推荐 - 生活测评君
  • Office文档3秒预览:QuickLook原生插件让你的工作效率翻倍
  • 2026云南灭火器销售企业排行推荐:合规与服务能力实测对比 - 奔跑123
  • 破译大数据底层密码:从 HDFS 存储基石到现代分布式计算引擎的架构演进
  • 3分钟掌握AI视频智能分析:让机器看懂视频的魔法工具
  • 2026年济南管道漏水检测/市政管道疏通清淤/下水道高压清洗公司推荐榜单:精准定位与高效疏通实力之选 - 品牌发掘
  • 新疆高端定制游导游服务边界参考 - 盛世西域旅行
  • 数据初诊五步法:从pandas基础操作读懂业务真相
  • 国内知名半导体展会哪家含金量高?从客商资源产业链维度客观解析 - 品牌2026
  • 万息投标产品功能全解析:深圳万息科技打造招投标专业查重解决方案 - 资讯焦点
  • 2026深圳靠谱GEO优化公司推荐,不按效果付费都是忽悠 - 速递信息
  • 2026高考参考:四川 470-530 分怎么选重庆高校 - 品牌2026
  • 2026年投票制作平台怎么挑?功能、防刷到性价比一篇讲明白 - 品研笔录
  • 2026 南京秦淮区黄金回收门店实测对比,小白轻松挑选高收益变现渠道 - 奢侈品回收评测
  • 2026 常州热门夏令营机构实测排名|军事成长类首选,这家口碑与实力双在线 - 资讯焦点
  • 不锈钢厂家合作避坑指南,这 10 个要点一定要注意 - 速递信息
  • OpCore Simplify:告别黑苹果配置噩梦,三步搞定OpenCore EFI
  • 2026年企业即时通讯软件怎么选?小天互连、钉钉、企业微信部署与安全对比 - 小天互连即时通讯
  • 2026枣庄黄金回收横向测评:六家主流门店服务对比,选出最安心那家 - 商业信息快查
  • 如何构建沉浸式游戏互动体验:DG-Lab郊狼游戏控制器深度解析
  • RFID软硬件系统智能化品牌有哪些?七家头部品牌推荐! - 资讯焦点