一、引言

随着鸿蒙生态的持续发展,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_HOME        C:\Program Files\Java\jdk-17.0.18

TOOL_HOME       C:\Program Files\Huawei\DevEco Studio

DEVECO_SDK_HOME%TOOL_HOME%\sdk

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

具体路径

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

PUB_CACHE      C:\Users\用户名\pub_cache

PUB_HOSTED_URL      https://pub.flutter-io.cn

FLUTTER_STORAGE_BASE_URL      https://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 鸿蒙项目中

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐