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

鸿蒙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;}}});}
}
  • 效果展示

http://www.lryc.cn/news/449656.html

相关文章:

  • 【笔记】原子结构的近代理论
  • 【python】循环中断:break 和 continue
  • WIFI密码默认显示
  • Emiya 家今天的饭C++
  • Mybatis缓存机制(图文并茂!)
  • Git 工作区、暂存区和版本库
  • SSH 远程连接到 Linux 服务器上的 SQLite
  • 使用ElasticSearch-dump工具进行ES数据迁移、备份
  • SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解
  • 《深度学习》OpenCV 指纹验证、识别
  • 爬虫入门之爬虫原理以及请求响应
  • CTF ciscn_2019_web_northern_china_day1_web1复现
  • docker命令汇总
  • 云计算在现代企业中的应用与优势
  • Android平台GB28181实时回传流程和技术实现
  • Text-to-SQL方法研究
  • 【Router】路由功能之MAC地址过滤(MAC Filter)功能介绍及实现
  • Flink 本地 idea 调试开启 WebUI
  • 如何识别IP地址是独享的还是共享的
  • X-Spreadsheet使用教程:打造你的Web端电子表格应用
  • 订餐点餐|订餐系统基于java的订餐点餐系统小程序设计与实现(源码+数据库+文档)
  • Tkinter制作登录界面以及登陆后页面切换(一)
  • Colorful/七彩虹将星X17 AT 23 英特尔13代处理器 Win11原厂OEM系统 带COLORFUL一键还原
  • 《Ubuntu20.04环境下的ROS进阶学习8》
  • ubuntu24.04 怎么调整swap分区的大小,调整为16G
  • 【论文阅读】视觉里程计攻击
  • 解决 Git LFS 切换分支失败问题
  • BaoStock 的安装
  • 聚势启新 智向未来 | 重庆华阳通用科技有限公司揭牌成立
  • 【数据结构与算法】Z算法(扩展KMP)(C++和Python写法)