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

Flutter 鸿蒙(OpenHarmony)化适配实战:从零实现「点击按钮退出应用」插件

一、引言

随着鸿蒙生态的持续发展,Flutter 作为跨平台开发的主流框架,对鸿蒙系统的支持也越来越完善。很多 Flutter 开发者在迁移鸿蒙应用时,都会遇到「应用退出」的基础需求:点击按钮直接关闭应用,回到系统桌面。

本文将基于我的完整实操过程,从零带你实现一个 Flutter 鸿蒙适配的「退出应用」插件,全程覆盖环境搭建、代码实现、报错排查、最终验证,所有步骤均经过真机 / 模拟器验证,可直接复现

二、环境准备

在开始之前,请确保你的开发环境满足以下要求

flutter-oh 环境搭建(完整无遗漏)

1.1 下载 DevEco Studio 和模拟器

  1. 去华为官网下载 DevEco Studio:https://developer.huawei.com/consumer/cn/download
  2. 一路默认安装,记住安装路径(如C:\Program Files\Huawei\DevEco Studio
  3. 打开 DevEco → 右上角点Device Manager→ 点+ New Emulator
  4. 选择Phone类型 → 选Huawei_Phone(HarmonyOS 6.0.2(22))→ 点下载按钮(↓)
  5. 等待镜像下载完成,点击「Next」→「Finish」,启动模拟器,保持后台运行
  6. 记住模拟器设备 ID 例:127.0.0.1:5555

1.2 下载 OpenHarmony 版 Flutter

  1. 浏览器访问 OpenHarmony 官方 Flutter 发布页(https://gitcode.com/openharmony-tpc/flutter_flutter/tree/oh-3.35.7-dev)克隆你所需的flutter用命令提示符运行,把刚刚复制的克隆链接直接黏贴并Enter运行即可利用flutter --version(cmd内)进行验证,如果出现版本号如Flutter 3.7.12...即为成功
  2. 解压到C:\Users\用户名\flutter-oh目录,Flutter 根目录为C:\Users\用户名\flutter-oh\flutter
  3. C:\Users\用户名\flutter-oh\flutter\bin加入系统环境变量Path

1.3 下载 JDK 17

  1. 去 Oracle 官网下载 JDK 17,一路默认安装,记住安装路径(如C:\Program Files\Java\jdk-17.0.18
  2. 配置环境变量JAVA_HOME指向 JDK 根目录,%JAVA_HOME%\bin加入Path

1.4 配置系统环境变量(必须重启电脑才生效)、

如何打开环境变量

打开此电脑,右键此电脑

点击属性

点击高级系统设置

点击环境变量

在系统变量中编辑或新建你需要的变量

变量名变量值(替换成你的真实路径)

JAVA_HOMEC:\Program Files\Java\jdk-17.0.18

TOOL_HOMEC:\Program Files\Huawei\DevEco Studio

DEVECO_SDK_HOME%TOOL_HOME%\sdk

HOS_SDK_HOMEC:\Users\用户名\AppData\Local\OpenHarmony\Sdk\20\20、

具体路径

(如果没有下载API工具请全部勾选后点击Apply等待下载完毕)

PUB_CACHEC:\Users\用户名\pub_cache

PUB_HOSTED_URLhttps://pub.flutter-io.cn

FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn

Path(在Path内编辑的,上面的大多都是新建的变量)

%JAVA_HOME%\bin

%TOOL_HOME%\tools\ohpm\bin

%TOOL_HOME%\tools\hvigor\bin

C:\Users\用户名\flutter-oh\flutter\bin

C:\Users\用户名\AppData\Local\OpenHarmony\Sdk\20\20\toolchains(此为上方一个附带插图对应的变量)

1.5 检查环境(重启后在cmd执行)

java -version flutter --version hdc list targets flutter doctor -v

✅ 正常结果:所有命令无报错,hdc list targets显示127.0.0.1:5555(你的模拟器设备ID)flutter doctor -v显示 OpenHarmony 工具链正常

三、建立 flutter_exit_app

第一步:打开 CMD,进入你的用户目录

cd C:\Users\19068

第二步:重新创建插件项目(官方标准命令)

flutter create --template=plugin flutter_exit_app

第三步:进入项目

cd flutter_exit_app

第四步:检查是否正常(测试环境)

flutter --version

✅ 成功标志

CMD 会显示:

Flutter 3.27.5-ohos-1.0.4 • channel [user-branch]

四、给空插件加上 OHOS 鸿蒙平台支持

第一步:进入插件目录(cmd内)

cd flutter_exit_app

第二步:添加 OHOS 平台(命令写死,直接复制)

flutter create -t plugin --platforms=ohos .

五、更新pubspec.yaml文件,让插件正式支持 OHOS 平台

打开C:\Users\用户名\flutter_exit_app\pubspec.yaml,找到flutterpluginplatforms部分,添加 OHOS 配置

flutter: plugin: platforms: # 这里会自动有其他平台(比如ios/android),你只需要加上ohos ohos: pluginClass: FlutterExitAppPlugin

保存文件(Ctrl+S),红色提示就会消失,插件就正式支持 OHOS 了

例:

六、打开DevEco Studio的ohos工程并运行模拟器

第一步:用 DevEco Studio 打开 OHOS 工程
  1. 打开 DevEco Studio → 点击Open...
  2. 选择路径:C:\Users\用户名\flutter_exit_app\example\ohos(这是你的鸿蒙工程根目录)
  3. 等待项目加载完成(底部进度条走完)
第二步:打开模拟器

1.找到并点击项目页面右上角的No Devices

2.点击Device Manager

3.运行你之前下好的模拟器

模拟器启动后,回到 CMD 运行:

cd C:\Users\19068\flutter_exit_app\example flutter run -d 127.0.0.1:5555

(此处的127.0.0.1:5555应为你自己的模拟器地址)

运行完毕后,可能会出现下面这种情况只需要根据命令符所说的照做即可

七、补全配置 + 实现功能

第一步:修改插件核心代码(实现退出功能)

打开lib/flutter_exit_app.dart全选删除原有代码,粘贴这段纯 Dart 实现:

import 'dart:io'; class FlutterExitApp { /// 点击按钮后退出应用 static void exitApp() { // 系统标准退出指令,鸿蒙上直接生效 exit(0); } }

第二步:修改示例界面代码(添加Exit按钮)

打开example/lib/main.dart全选删除原有代码,粘贴这段:

import 'package:flutter/material.dart'; import 'package:flutter_exit_app/flutter_exit_app.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Exit App Test'), ), body: Center( child: ElevatedButton( // 点击触发退出 onPressed: FlutterExitApp.exitApp, child: const Text('Exit'), ), ), ), ); } }

第三步:运行测试

在 CMD 里执行:

cd example flutter run -d 127.0.0.1:5555

(如果无法正常运行,请检查你的模拟器窗口是否打开)

打开界面示例

八、效果展示

  1. 应用启动后,界面显示「Exit」按钮
  2. 点击按钮,应用立即关闭,直接回到鸿蒙模拟器桌面
  3. 重复点击,效果一致,无卡顿、无崩溃,完全符合预期

九、总结

本次 Flutter 鸿蒙适配实战,我们从零实现了「点击按钮退出应用」的插件,核心亮点如下:

  • 跨平台兼容exit(0)同时支持 Android、iOS、鸿蒙等多平台,一套代码多端运行
  • 全程避坑:汇总了所有常见报错的解决方案,可直接复现

对于 Flutter 鸿蒙迁移的开发者来说,「应用退出」是最基础的需求,本文的实现方式是最稳定、最易维护的方案,可直接集成到现有 Flutter 鸿蒙项目中

http://www.jsqmd.com/news/574000/

相关文章:

  • 2025最权威的六大AI学术工具实测分析
  • SEO和PPC广告之间的关系是什么_如何通过定期分析优化网站的SEO表现
  • SEO优化的基本流程有哪些
  • OpenClaw多模态编程助手:Qwen2.5-VL-7B解析代码截图生成注释
  • python工程项目任务分配管理系统
  • SpringBoot+Vue物业管理系统源码+论文
  • 从零到一:手把手教你用CANoe和Python脚本实现UDS诊断自动化测试(附完整代码)
  • 告别命令行!用3CDaemon在Windows上5分钟搞定FTP/TFTP服务器(附Ubuntu客户端测试)
  • ESP32/ESP8266轻量级MQTT连接管理库espMqttManager
  • LabelImg标注神器:如何一键导入预设标签避免YOLO训练翻车
  • 纯前端 PNG/JPG 转 PDF 工具(无需服务器,源码分享)
  • 我劝退了 3 个想装 OpenClaw 的朋友,直到他们看到这个工作流
  • 中医AI革命:如何用70亿参数模型破解千年诊疗难题
  • 2026年内蒙古钢结构施工服务商综合评估与选择策略 - 2026年企业推荐榜
  • Escornabot-lib:面向教育机器人的Arduino语义化控制库
  • 手把手教你用Buildroot给i.MX6ULL定制一个带摄像头推流的轻量级Linux系统(含ffmpeg、nginx配置)
  • 矿井底下干活最怕啥?通风不畅分分钟要命。今天咱们用S7-200 PLC和MCGS组态软件搭个硬核通风控制系统,手把手教你怎么让矿井呼吸起来
  • 用Multisim复刻经典:手把手教你搭建一个带分数显示的四人抢答器(附仿真文件)
  • KDD_CUP99数据集预处理与模型性能验证(附处理代码与数据集)
  • 如何高效利用孔祥仁线性代数网课?我的实战笔记与技巧分享
  • SEO 外联有哪些常见的方法和策略_SEO 外联需要多长时间才能见效
  • Java虚拟线程调试黄金组合:jstack -l + jcmd VM.native_memory + JMC Thread Group视图(生产环境零侵入诊断法)
  • OpenClaw对接Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF:3步完成本地AI助手部署
  • OpenClaw夜间任务:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF自动生成日报
  • 2026云南昆明二手车公司哪家好?哪家卖车价格公道:找对靠谱商家,卖车买车都省心 - 栗子测评
  • OpenClaw自动化简历投递:Qwen3-14B智能匹配职位要求
  • Gemma-3-12b-it多语言实战:OpenClaw自动化处理跨境邮件
  • C语言函数返回值的设计哲学与实践
  • 苹果 AirPods Pro 3 与三星 Galaxy Buds 4 Pro:高端无线耳机市场的巅峰对决
  • 2026全自动视觉点胶机/视觉点漆机/双液点胶机生产厂家大盘点:谁在引领柔性制造? - 栗子测评