news 2026/6/16 18:27:48

如何使用Flutter与OpenHarmony通信 FlutterChannel

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何使用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());
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 18:24:52

PMDARIMA股票预测:自动化ARIMA建模的工程实践指南

1. 项目概述&#xff1a;为什么用 PMDARIMA 做股票预测&#xff0c;不是“玄学”&#xff0c;而是可落地的工程实践你有没有试过盯着K线图一整天&#xff0c;反复刷新同一只股票的分时数据&#xff0c;心里默念“明天该涨了吧”&#xff1f;我干过。三年前刚转行做量化策略支持…

作者头像 李华
网站建设 2026/6/16 18:20:50

网络热词传播机制解析:从“弹简特”看内容创作与社群运营

1. 项目概述&#xff1a;从“弹简特”看当代网络热词的传播与解构最近在社交媒体和内容平台上&#xff0c;一个叫“弹简特”的词突然火了起来。如果你还没听过&#xff0c;可能会觉得有点摸不着头脑&#xff0c;这听起来像是一个品牌名、一个代号&#xff0c;或者某种新奇的玩意…

作者头像 李华
网站建设 2026/6/16 18:10:51

3步了解Obsidian中文社区论坛:从民间论坛到官方生态的完整指南

3步了解Obsidian中文社区论坛&#xff1a;从民间论坛到官方生态的完整指南 【免费下载链接】forum Obsidian中文社区 项目地址: https://gitcode.com/gh_mirrors/forum69/forum 还记得2020年那个Obsidian刚刚崭露头角的时期吗&#xff1f;当时这个强大的笔记工具还没有官…

作者头像 李华
网站建设 2026/6/16 18:08:27

项目实训开发日志(十):BabyMind:基于多Agent和RAAG的科学育儿辅助平台

引言在第九周&#xff0c;我们已经围绕问答会话操作栏、分享页、发布页和APK下载链路完成了用户侧交付能力的补齐。进入第十周&#xff0c;也是整个项目的收尾阶段后&#xff0c;我们的开发重点进一步从功能实现与否转向系统能否接住真实材料、能否被后台观测、能否经受验收测试…

作者头像 李华