鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息
本文将通过MethodChannel获取设备信息,以此来演练MethodChannel用法。
- 建立channel
flutter代码:
MethodChannel methodChannel = MethodChannel("com.xmg.test");
ohos代码:
private channel: MethodChannel | null = nullthis.channel = new MethodChannel(flutterEngine.dartExecutor.getBinaryMessenger(), 'com.xmg.test')this.channel.setMethodCallHandler({onMethodCall(call: MethodCall, result: MethodResult): void {switch (call.method) {case 'getDeviceInfo':result.success(deviceInfo.displayVersion);break;default:result.notImplementedbreak;}}});
注意:channelName必须一致。这里都叫com.xmg.test
- flutter侧调用
void _getDeviceInfo() async{deviceInfo = await methodChannel.invokeMethod('getDeviceInfo');setState(() {});} - 完整代码
flutter完整代码:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo',theme: ThemeData(primarySwatch: Colors.blue,),home: const MyHomePage(title: 'MethodChannel获取设备信息'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {MethodChannel methodChannel = MethodChannel("com.xmg.test");String deviceInfo = "";void _getDeviceInfo() async{deviceInfo = await methodChannel.invokeMethod('getDeviceInfo');setState(() {});}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(widget.title),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Text(deviceInfo,),ElevatedButton(onPressed: () {_getDeviceInfo();}, child: Text("获取设备版本号"))],),),);}
}
ohos完整代码:
import { FlutterAbility, FlutterEngine, MethodCall, MethodChannel, MethodResult } from '@ohos/flutter_ohos';
import { GeneratedPluginRegistrant } from '../plugins/GeneratedPluginRegistrant';
import deviceInfo from '@ohos.deviceInfo'export default class EntryAbility extends FlutterAbility {private channel: MethodChannel | null = nullconfigureFlutterEngine(flutterEngine: FlutterEngine) {super.configureFlutterEngine(flutterEngine)GeneratedPluginRegistrant.registerWith(flutterEngine)this.channel = new MethodChannel(flutterEngine.dartExecutor.getBinaryMessenger(), 'com.xmg.test')this.channel.setMethodCallHandler({onMethodCall(call: MethodCall, result: MethodResult): void {switch (call.method) {case 'getDeviceInfo':result.success(deviceInfo.displayVersion);break;default:result.notImplementedbreak;}}});}
}
- 效果展示

相关文章:
鸿蒙harmonyos next flutter通信之MethodChannel获取设备信息
本文将通过MethodChannel获取设备信息,以此来演练MethodChannel用法。 建立channel flutter代码: MethodChannel methodChannel MethodChannel("com.xmg.test"); ohos代码: private channel: MethodChannel | null nullthis.c…...
【笔记】原子结构的近代理论
近代原子结构理论的建立是从氢原子光谱得到启示的。 一、氢原子光谱与波尔理论 1.氢原子光谱 在装有两个电极的真空玻璃管内通入极少量高纯氢气,通高压电使之放电,管中发出的光束通过分光棱镜,得到分立的谱线,称为线状光谱。 发…...
【python】循环中断:break 和 continue
目录: while 循环的基础语法while 循环的基础案例while 循环的嵌套应用while 循环的嵌套案例for 循环的基础语法for 循环的嵌套应用循环中断:break 和 continue综合案例 学习目标: 掌握使用 continue 和 break 关键字控制循环 思考&#…...
WIFI密码默认显示
文章目录 需求分析遇到问题问题原因解决方案 需求 在进入设置,点击某一个wifi,连接wifi 界面,显示密码默认选中状态,效果如下 分析 在 WiFi密码被输入法挡住 中我们已经分析了整个流程,布局文件和控制中心。 结局系统设置WIFI连…...
Emiya 家今天的饭C++
题目: 样例解释: 【样例 1 解释】 由于在这个样例中,对于每组 i,j,Emiya 都最多只会做一道菜,因此我们直接通过给出烹饪方法、主要食材的编号来描述一道菜。 符合要求的方案包括: 做一道用烹饪方法 1、主要…...
Mybatis缓存机制(图文并茂!)
目录 一级缓存 需求我们在一个测试中通过ID两次查询Monster表中的信息。 二级缓存 案例分许(和上述一样的需求) EhCache第三方缓存 在了解缓存机制之前,我们要先了解什么是缓存: 缓存是一种高速存储器,用于暂时存储访问频繁的数据&…...
Git 工作区、暂存区和版本库
Git 工作区、暂存区和版本库 Git 是一个强大的版本控制系统,它帮助开发者管理代码历史,协作开发,以及跟踪和合并更改。为了更好地理解 Git 的工作流程,我们需要了解 Git 中的三个核心概念:工作区(Workspac…...
SSH 远程连接到 Linux 服务器上的 SQLite
通过 SSH 远程连接到 Linux 服务器上的 SQLite 数据库文件的流程,可以分为以下几个步骤: 通过 SSH 连接到远程 Linux 服务器。在远程服务器上执行 SQLite 命令行工具,操作数据库文件。在本地使用工具,通过 SSH 隧道间接访问远程的…...
使用ElasticSearch-dump工具进行ES数据迁移、备份
elasticsearch-dump基本使用 该工具基于第三方Elasticdump工具来实现,仓库地址:https://github.com/elasticsearch-dump/elasticsearch-dump/tree/master,用于更加快捷方便的将Elasticsearch不同集群的数据进行索引备份和还原。 一、安装 …...
SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解
一、开始请求 在浏览器访问http://localhost:8080/spring_mymvc/userlist这个接口,是个get请求。 FrameworkServlet类的service方法会被请求到: 调用路径如下: service:945, FrameworkServlet (org.springframework.web.servlet) service:764, HttpSer…...
《深度学习》OpenCV 指纹验证、识别
目录 一、指纹验证 1、什么是指纹验证 2、步骤 1)图像采集 2)图像预处理 3)特征提取 4)特征匹配 5)相似度比较 6)结果输出 二、案例实现 1、完整代码 2、实现结果 调试模式: 三、…...
爬虫入门之爬虫原理以及请求响应
爬虫入门之爬虫原理以及请求响应 爬虫需要用到的库, 叫requests. 在导入requests库之前, 需要安装它, 打开cmd: 输入pip install 库名 pip install requests后面出现successful或requirement already就说明已经下载成功了!!! 下载出现的问题: 1.有报错或者是下载慢 修改镜像…...
CTF ciscn_2019_web_northern_china_day1_web1复现
ciscn_2019_web_northern_china_day1_web1 复现,环境源于CTFTraining 分析 拿到题目扫描,发现没有什么有用资产 扫描过程中注册账号登录,发现上传入口 上传文件,发现下载删除行为,寻找功能点,发现不能访问…...
docker命令汇总
Docker 是一个开源的应用容器引擎,它允许开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 以下是一些常用的 Docker 命令…...
云计算在现代企业中的应用与优势
云计算在现代企业中的应用与优势 随着信息技术的飞速发展,云计算已经成为现代企业不可或缺的一部分。作为一种创新的计算模式,云计算为企业提供了前所未有的灵活性和可扩展性,极大地推动了企业的数字化转型。 一、云计算的基本概念 云计算…...
Android平台GB28181实时回传流程和技术实现
规范解读 GB28181 中的 “INVITE” 是会话初始协议(SIP)中的一种请求方法,主要用于邀请一个或多个参与者加入特定的会话。在 GB28181 标准中,“INVITE” 请求通常用于发起媒体流的传输请求。当一个设备想要接收来自另一个设备的媒…...
Text-to-SQL方法研究
有关Text-to-SQL实现细节,可以查阅我的另一篇文章text-to-sql将自然语言转换为数据库查询语句 1、面临的挑战 自然语言问题往往包含复杂的语言结构,如嵌套语句、倒装句和省略等,很难准确映射到SQL查询上。此外,自然语言本身就存在歧义,一个问题可能有多种解读。消除…...
【Router】路由功能之MAC地址过滤(MAC Filter)功能介绍及实现
MAC地址过滤(MAC Filter) MAC 地址过滤是一种网络安全技术,通过在网络设备(如路由器)上设置规则,允许或阻止特定 MAC 地址的设备连接到网络。其主要作用是增强网络的安全性,防止未经授权的设备接入网络。 MAC Filter工作原理 MAC 地址过滤的工作原理是根据设备…...
Flink 本地 idea 调试开启 WebUI
Flink 本地 idea 调试开启 WebUI Maven 引用相关的包配置端口使用本地带UI环境启动 // maven 导入<!-- flink运行时的webUI --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-runtime-web</artifactId><version…...
如何识别IP地址是独享的还是共享的
在网络环境中,IP地址的分配和使用方式直接影响到用户的在线隐私和访问安全。选择独享IP还是共享IP取决于用户的具体需求,理解这两种IP地址的差异及其特点至关重要。本文将探讨如何区分独享IP和共享IP,以及各自的优缺点。 1. 什么是独享IP与共…...
Windows平台Docker部署Home Assistant全攻略:从零配置到智能家居控制
1. 环境准备与Docker安装 想在Windows上玩转智能家居中枢?DockerHome Assistant组合绝对是新手友好方案。我去年给父母家改造智能家居时就用的这套方案,实测稳定运行一年多没出过问题。先说说基础环境搭建,这里会手把手带你避开我踩过的坑。 …...
MiniCPM-V-2_6在Android应用开发中的实战:移动端AI集成指南
MiniCPM-V-2_6在Android应用开发中的实战:移动端AI集成指南 最近在捣鼓一个智能相册应用,想让它能自动识别照片里的内容,比如是猫是狗、是风景还是美食,然后智能分类。一开始想用云端的AI服务,但转念一想,…...
OpenClaw钉钉集成:Qwen3.5-9B打造团队知识查询机器人
OpenClaw钉钉集成:Qwen3.5-9B打造团队知识查询机器人 1. 为什么选择OpenClawQwen3.5-9B做知识机器人? 去年团队规模突破30人后,我突然发现每天要花1-2小时重复回答相同的问题:"新版本API文档在哪?""客…...
ChatGPT响应延迟优化实战:从架构设计到性能调优
ChatGPT响应延迟优化实战:从架构设计到性能调优 最近在项目里深度集成了ChatGPT的API,发现不少同事都在吐槽:“这玩意儿怎么老是卡卡的?” 尤其是在处理长文本、多轮对话或者高并发请求时,响应延迟的问题尤为突出。作…...
Python 3.14 JIT编译器性能调优:2026年仅限PyPI pre-release通道开放的--jit-profiling-v2参数详解
第一章:Python 3.14 JIT编译器性能调优:2026年仅限PyPI pre-release通道开放的--jit-profiling-v2参数详解Python 3.14 引入了实验性 JIT 编译器增强模块,其核心分析能力由尚未进入稳定通道的 --jit-profiling-v2 参数驱动。该参数仅通过 PyP…...
ComfyUI-TeaCache:突破AI创作效率瓶颈的全方位优化方案
ComfyUI-TeaCache:突破AI创作效率瓶颈的全方位优化方案 【免费下载链接】ComfyUI-TeaCache 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-TeaCache 在AI图像生成领域,推理速度与生成质量的平衡始终是创作者面临的核心挑战。ComfyUI-Tea…...
人机协作新范式:盘点2026年全网爆红的AI论文写作工具
一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具横空出世,覆盖选题构思、文献综述、数据整理、格式排版等全流程,真正帮你高效搞定论文,告别熬夜与焦虑。 一、全流程王者:一站式搞定论文…...
告别Anaconda臃肿安装!用VSCode+Miniconda打造轻量级Python数据分析环境
轻量级Python数据分析环境:VSCodeMiniconda高效组合方案 为什么需要告别Anaconda? 在数据科学领域,开发环境的效率直接影响工作产出。传统Anaconda发行版虽然功能全面,但其庞大的体积(通常超过3GB)和缓慢…...
ChatTTS WebUI 实战:从零搭建高效语音合成服务
最近在做一个需要语音合成的项目,发现直接调用云端API虽然方便,但延迟和成本都是问题。于是开始研究本地部署的方案,ChatTTS以其优秀的音质和开源特性进入了我的视野。但直接用官方Demo,一旦请求量上来,延迟飙升、内存…...
VSG并联系统振荡了?从根轨迹和参与因子分析稳定性(实例详解)
VSG并联系统振荡问题诊断:从根轨迹到参与因子的工程实践指南 当三台VSG并联系统在实验室首次同步运行时,我们观察到了令人不安的2.4Hz持续功率振荡。这种低频振荡不仅导致功率分配失衡,更威胁着整个微电网的稳定运行。作为从业十二年的电力电…...
