Flutter add_to_app 在鸿蒙上的使用指南

【鸿蒙开发实战教程】在MacOS上如何使用 Flutter 构建鸿蒙APP 有很多小伙伴不知道该从哪里开始学习鸿蒙开发技术?也不知道鸿蒙开发的知识点重点掌握的又有哪些?自学时频繁踩坑,导致浪费大量时间。结果还是一知半解。所以有一份实用的鸿蒙(HarmonyOS NEXT)全栈开发资料用来跟着学习是非常有必要的。 阅读详情

插件介绍

Flutter add_to_app 是一个用于将 Flutter 模块嵌入到现有原生应用中的解决方案,它允许开发者在保留现有原生应用代码和业务逻辑的同时,利用 Flutter 的跨平台能力快速开发新功能。本指南将重点介绍如何在鸿蒙(HarmonyOS)上使用 add_to_app 示例中的 books Flutter 模块。

books 示例是 add_to_app 中一个具有代表性的案例,它模拟了一个真实的图书应用场景,展示了:

  • 如何将 Flutter 模块集成到已有业务逻辑和中间件的鸿蒙应用中
  • 如何使用 Pigeon 插件自动生成平台通道代码,简化 Dart 与 ArkTS 之间的通信
  • 如何在 Flutter 和鸿蒙原生应用之间传递复杂数据结构(如 Book 对象)

包的引入

由于这是一个自定义修改版本的 Flutter 模块,需要以 Git 形式引入。在您的鸿蒙项目中,按照以下步骤配置依赖:

  1. 打开项目根目录下的 pubspec.yaml 文件
  2. 在 dependencies 部分添加以下配置:
dependencies:
  flutter_module_books:
    git:
      url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
      path: "packages/flutter_samples/add_to_app/books/flutter_module_books"
  1. 运行 flutter pub get 命令获取依赖

API 的调用

数据结构

books 模块主要使用以下数据结构在 Flutter 和鸿蒙之间传递数据:

class Book {
  String? title;       // 书名
  String? subtitle;    // 副标题
  String? author;      // 作者
  String? summary;     // 简介
  String? publishDate; // 出版日期
  int? pageCount;      // 页数
  Thumbnail? thumbnail; // 封面缩略图
}

class Thumbnail {
  String? url; // 缩略图 URL
}

通信接口

通过 Pigeon 自动生成的接口,实现 Flutter 与鸿蒙原生应用之间的双向通信:

  1. 从鸿蒙到 Flutter 的调用:
// 在 Flutter 中注册接收鸿蒙端的调用
FlutterBookApi.setup(FlutterBookApiHandler((book) {
  // 处理从鸿蒙端传递过来的 Book 对象
  setState(() {
    this.book = book;
    // 更新 UI
  });
}));
  1. 从 Flutter 到鸿蒙的调用:
// 创建 HostBookApi 实例,用于调用鸿蒙端的方法
final hostApi = HostBookApi();

// 取消编辑
hostApi.cancel();

// 完成编辑并返回更新后的 Book 对象
hostApi.finishEditingBook(updatedBook);

集成到鸿蒙应用

  1. 配置鸿蒙模块:

    在 flutter_module_books/.ohos/flutter_module/src/main/module.json5 文件中配置模块信息:

    {
      "module": {
        "name": "flutter_module",
        "type": "har",
        "description": "flutter_module",
        "mainElement": "",
        "deviceTypes": ["phone", "tablet", "2in1"],
        "installationFree": false,
        "abilities": [],
        "requestPermissions": [
          {"name": "ohos.permission.INTERNET"}
        ]
      }
    }
    
  2. 在 ArkTS 中使用 Flutter 模块:

    在鸿蒙应用的 EntryAbility.ets 或其他合适的位置初始化 Flutter 引擎并加载 Flutter 模块:

    // 导入必要的模块
    import { AbilityStage } from '@kit.AbilityKit';
    import { FlutterEngine } from '@ohos/flutter_engine';
    
    export default class MyAbilityStage extends AbilityStage {
      onCreate() {
        // 初始化 Flutter 引擎
        const flutterEngine = new FlutterEngine();
        await flutterEngine.initialize();
    
        // 预加载 Flutter 模块
        await flutterEngine.runDartEntrypoint('lib/main.dart');
      }
    }
    
  3. 传递数据给 Flutter 模块:

    // 创建 Book 对象
    const book = {
      title: 'Flutter 实战',
      author: '张三',
      publishDate: '2025-01-01',
      pageCount: 300
    };
    
    // 传递给 Flutter 模块
    await flutterEngine.invokeMethod('displayBookDetails', book);
    
  4. 接收来自 Flutter 的数据:

    // 监听 Flutter 模块的回调
    flutterEngine.setMethodCallHandler((method, args) => {
      if (method === 'finishEditingBook') {
        const updatedBook = args as Book;
        // 处理更新后的 Book 对象
        console.log('Updated book:', updatedBook);
      } else if (method === 'cancel') {
        // 处理取消操作
        console.log('Edit canceled');
      }
      return Promise.resolve();
    });
    

示例应用

books 示例应用展示了一个完整的图书详情编辑功能:

  1. 鸿蒙原生应用通过 displayBookDetails 方法将 Book 对象传递给 Flutter 模块
  2. Flutter 模块显示图书详情编辑界面,允许用户修改书名、副标题和作者
  3. 用户可以点击保存按钮,通过 finishEditingBook 方法将更新后的 Book 对象返回给鸿蒙原生应用
  4. 用户也可以点击取消按钮,通过 cancel 方法取消编辑

总结

Flutter add_to_app 提供了一种灵活的方式将 Flutter 功能集成到现有的鸿蒙应用中,特别是 books 示例展示了:

  • 如何使用 Pigeon 插件简化 Flutter 与鸿蒙之间的通信
  • 如何在保留现有业务逻辑的同时,利用 Flutter 快速开发新功能
  • 如何在 Flutter 和鸿蒙之间传递复杂的数据结构

这种混合开发模式允许开发者充分利用 Flutter 的跨平台能力和鸿蒙的原生特性,为用户提供更好的应用体验。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.youkuaiyun.com

Flutter鸿蒙项目—如何添加对华为鸿蒙系统的支持 打开IDE,按照引导,安装环境即可,注意,nodejs选择v16.20。 阅读详情

相关推荐

Flutter大文件分片上传在鸿蒙系统的适配优化

分片传输技术通过将大文件拆分为多个小块进行传输,有效解决了网络波动和内存占用问题。其核心原理是将文件分割为固定或动态大小的分片,配合断点续传机制确保传输可靠性。在移动应用开发中,该技术显著提升了视频、图片等大文件的上传成功率,尤其在弱网环境下优势明显。随着鸿蒙系统的普及,Flutter应用需要针对鸿蒙平台特有的网络层实现进行适配,包括线程模型、存储访问和网络栈的差异处理。通过优化分片策略和增强断点续传功能,开发者可以在鸿蒙设备上实现与原生平台同等级别的传输稳定性,其中关键指标如上传成功率和内存占用率得到显著

weixin_30542979的博客 274

Flutter Add to App DEMO 笔记

[GIT地址] Add to App 官方文档 https://flutter.dev/docs/development/add-to-app git clone --depth 1 https://github.com/flutter/samples.git 摘录部分代码块,全源码可看上述地址,应该Flutter 已经 出2.0+版本, 增加了空异常检测, 所以demo 所使用的库包都要升级到支持空检查的新版本。 Android 端配置: FlutterActivity 添加到 manifest

爱孔孟 567

Flutter与鸿蒙系统网络通信适配实践

网络通信是移动应用开发中的基础技术,其核心在于实现高效、稳定的数据传输。在跨平台开发场景下,Flutter框架与鸿蒙系统的网络通信适配面临协议转换、线程调度等挑战。通过函数式编程范式重构网络层,可将传统回调模式升级为声明式响应流,显著提升代码可维护性。特别是在高并发场景中,结合令牌桶算法和Redux状态管理,能有效解决资源竞争与死锁问题。本次实践通过深度集成鸿蒙DistributedDataObject等系统特性,实现了网络IO与本地计算资源的统一调度,为Flutter应用在鸿蒙生态的落地提供了可靠解决方案

weixin_30291791的博客 443

Flutter add-to-app 架构:宿主 App 与 Flutter 模块的路由栈同步机制

今天,我们深入探讨了Flutter Add-to-App架构中路由栈同步的问题,并讨论了基于Platform Channel的实现方案。重点在于理解原生平台和Flutter引擎各自的路由管理方式,并在二者之间建立可靠的通信机制,同步路由事件和数据。最后,根据实际业务场景选择合适的路由同步策略,保证用户体验的一致性和流畅性。希望今天的讲解能够帮助大家更好地理解和应用Flutter Add-to-App架构。

weixin_41455464的博客 1187

【Macbook-Latex安装部署教程】【Win-Texlive镜像下载】【简单易上手】MacTex+Vscode/Texstudio

该教程记录自己在mac()上安装部署Latex环境的经验,整个教程操作简单,配置要求少,易上手。教程分成三部分:Mactex下载与安装,Vscode插件下载与配置文件修改,Texstudio安装。

sunriseOvO的博客 2567

S32K3实战:手把手教你用eMIOS模块实现电机PWM控制(附代码)

本文详细解析了NXP S32K3系列MCU的eMIOS模块在电机PWM控制中的应用,从硬件设计到软件实现,再到调试与优化,提供了完整的实战指南。通过eMIOS模块的硬件级PWM生成能力,工程师可以实现高精度的电机控制,适用于汽车电子和工业控制领域。

weixin_42570484的博客 146

Flutter 混合开发实战:从 Add-to-App 到高性能双向通信的全栈集成方案

5}Flutter 混合开发的成功,不在于技术炫技,而在于平衡创新与稳定、效率与风险。本文提供的全栈集成方案,已在电商、社交、金融等多个领域验证有效。优秀的混合架构,让用户感知不到“混合”,只感受到“流畅”。行动建议在现有 App 中新建一个 Flutter Module;实现 Engine 预热与复用;封装统一的 NativeRouter 中间件;建立混合栈的自动化测试用例。唯有将混合开发工程化、标准化,才能真正释放 Flutter 的跨端价值。

2501_93350459的博客 1040

从ARCore到AICore:揭秘Google如何通过系统级服务推动Android生态创新

本文深入探讨了Google如何通过AICore等系统级服务推动Android生态创新。从ARCore到AICore,Google通过分层解耦策略将AI能力下沉至系统层,实现端侧大模型推理,如Gemini Nano在Pixel 8 Pro中的应用。文章剖析了AICore的技术架构、开发者赋能路径及场景化实践,展示了其在通信、内容创作和生产力工具中的卓越表现。

rust6ferris的博客 545

向现有应用添加 Flutter

Add-to-app有些时候,一次性把现有的应用重写至 Flutter 不实际。在这种情况下,您可以把 Flutter 当作一个单独的库或模块集成到现有的应用中。随后,这个模块可被导入到...

谷歌开发者 1171

Allegro PCB设计小技巧:如何用Shift键快速平移复制走线和过孔?

本文深入解析了Allegro PCB设计中利用Shift键进行平移复制的核心技巧。通过对比传统复制粘贴流程,详细演示了如何高效、精准地批量复制走线和过孔,尤其适用于创建等间距电源总线、过孔阵列等场景,能显著提升PCB设计效率与准确性。

pz89012345的博客 553

各大厂薪资对比爬虫:Python采集OfferShow爆料数据

print(f"⚠️ API返回错误码: {data.get('code')}, msg: {data.get('msg')}")ax.set_title('各大厂薪资对比 (基于OfferShow爆料数据)', fontsize=16, fontweight='bold')stats.columns = ['人数', '平均年薪', '年薪中位数', '年薪标准差', '平均月薪', '平均月数']print(analyzer.get_position_stats('字节跳动').head(10))

2201_76125261的博客 602

告别繁琐集成!Flutter与Jetpack Compose无缝融合的Android现代UI实践指南

还在为Android应用中Flutter模块与原生UI的集成问题头疼?本文将带你一步掌握如何通过Flutter的add-to-app功能,实现Flutter与Jetpack Compose(安卓Jetpack组件库)的高效集成,解决界面卡顿、通信复杂等痛点,让你的应用兼具跨平台开发效率与原生UI体验。读完本文,你将获得完整的集成步骤、代码示例以及最佳实践指南。 ## 集成方案概述 Flutte...

gitblog_00062的博客 573

手把手教你如何在应用宝的Android模拟器安装第三方应用方法

通过上述步骤,你就能在腾讯应用宝模拟器中安装并运行本地的第三方APK应用了。虽然稍显繁琐,但操作起来并不复杂,只要按照步骤一步步做,就能顺利完成。希望这篇文章能帮助到遇到类似问题的你!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 7207

Flutter × 鸿蒙系统:一文搞懂如何将你的 App 移植到 HarmonyOS!

摘要:本文详细介绍了如何将Flutter应用迁移至鸿蒙系统(HarmonyOS)的完整流程。通过安装Flutter SDK、DevEco Studio和社区插件flutter_harmonyos,开发者可以快速适配鸿蒙设备。文章提供了代码示例,展示如何替代原生功能(如设备路径获取、Toast提示、通知和传感器读取),并针对典型场景(如日程提醒、相册选择)给出实战解决方案。此外,还解答了常见问题,强调平台差异隔离和模块化设计的重要性,为跨平台开发提供实用指导。

m0_74456227的博客 5635

YOLOv8改进 | 融合篇,YOLOv8主干改进融合网络之MobileNetV3+CA注意机制,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。YOLOv8中的主干网络替换成MobileNetV3+引入CA注意机制

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1881

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Flutter跨平台开发:Android View 在鸿蒙系统上的使用指南

Flutter Android View示例项目展示了如何在鸿蒙应用中集成Flutter模块,实现原生与Flutter的混合开发。该项目支持以视图级别嵌入Flutter组件,提供双向通信功能,并兼容原生插件(如url_launcher、sensors)。使用前需配置Flutter和鸿蒙开发环境,通过Git引入依赖。示例代码演示了在鸿蒙布局中添加Flutter容器,并在AbilitySlice中初始化Flutter视图的完整流程。Flutter模块可独立开发UI组件和功能,支持传感器等原生能力调用。

weixin_44540743的博客 1099

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Flutter跨平台开发:Fullscreen 在鸿蒙系统上的使用指南

Flutter Fullscreen是一个演示如何在鸿蒙应用中集成全屏Flutter模块的示例项目。它支持Flutter与鸿蒙原生代码的双向通信,提供计数器示例和两种视图模式(全屏/迷你),使用Provider进行状态管理并通过MethodChannel实现交互。项目要求Flutter SDK 2.19.5+和HarmonyOS SDK 3.0+环境,可通过Git方式引入依赖。集成时需创建专用Ability承载Flutter视图,设置MethodChannel处理器,并在布局中添加容器组件。

weixin_72566747的博客 1148

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Flutter跨平台开发:Books 在鸿蒙系统上的使用指南

Flutter Books示例项目展示了如何在原生鸿蒙应用中嵌入Flutter模块,并通过Pigeon插件实现双向通信。该项目模拟了图书目录应用场景,原生部分实现图书列表,Flutter模块负责详情页面。主要特点包括:支持鸿蒙与Flutter的无缝集成、自动生成跨平台API、保持原生架构约束。使用要求Flutter 2.19.5+和HarmonyOS 3.0+环境,通过Git引入依赖后,可在鸿蒙布局中添加Flutter视图容器,并处理图书数据的传递与更新。

weixin_44540743的博客 1055

Testing App Flutter Package 在鸿蒙上的使用指南

Flutter测试示例应用testing_app展示了Widget测试、集成测试、性能测试和状态管理测试方法。该应用采用Provider进行状态管理,GoRouter处理路由,可通过git方式引入项目。支持在鸿蒙设备上运行各类测试,包括单元测试、集成测试和性能分析,并能生成覆盖率报告。该示例为开发者提供了全面的Flutter测试实践参考,有助于提升应用质量。

weixin_54000324的博客 502

Flutter跨平台开发:Prebuilt Module 在鸿蒙系统上的使用指南

Flutter Prebuilt Module 是一个将 Flutter 作为预构建库集成到鸿蒙应用的解决方案。它支持将 Flutter 模块编译为 debug、profile 和 release 三种模式的预构建库,便于在未安装 Flutter 环境的开发团队中使用。主要功能包括全屏 Flutter 实例嵌入、原生与 Flutter 通信、状态管理及屏幕自适应。通过 MethodChannel 实现跨平台通信,并使用 provider 进行状态管理。

fiona2026的博客 829

Flutter框架跨平台鸿蒙开发——绕口令练习APP开发流程

本文介绍了使用Flutter框架开发跨平台绕口令练习APP的全过程,重点展示核心功能实现和代码结构。APP包含绕口令列表展示、分类筛选、收藏功能、随机推荐等模块,采用分层架构设计,包括数据模型、数据源和页面组件三部分。文章详细展示了绕口令数据模型定义、数据源管理以及列表页面的实现代码,为开发者提供了完整的Flutter跨平台开发实践参考。通过该案例,读者可以掌握Flutter应用开发的基本流程和关键实现技术。

jklzbl的博客 824

Flutter 三方库 OpenHarmony 鸿蒙适配实战:in_app_update 应用内更新插件 ArkTS 原生适配全流程

Flutter 三方库 OpenHarmony 鸿蒙适配实战:in_app_update 应用内更新插件 ArkTS 原生适配全流程

wei_shuo的博客 2万+

Flutter 三方库 app_store_server_sdk 的鸿蒙化适配指南 - 掌控 App Store Server API 通讯、内购验证实战、鸿蒙级精密商业专家

是一套专注于解决“从 Apple 服务端响应到强类型业务资产”全链路闭环的工业级方案。它通过提供一套严密的 JWS(JSON Web Signature)处理器矩阵与多维 API 请求容器,将复杂的 JWT 签名校验简化为更具语义化的 Dart API。在鸿蒙端项目中(特别是针对需要扩展至 iOS 环境或构建跨端支付中控的应用),利用它你可以构建出具备高联想力的商业决策架构。

大山哥 4638

Flutter跨平台开发:Plugin 在鸿蒙系统上的使用指南

本文介绍了在鸿蒙应用中集成Flutter插件的实现方法。通过Flutter Plugin示例展示了如何嵌入全屏Flutter实例,并演示了url_launcher、sensors和provider等插件的使用。详细说明了插件依赖配置、Flutter引擎初始化、视图嵌入以及原生与Flutter通信的实现步骤,包括MethodChannel的使用方法。该方案适用于需要在鸿蒙应用中扩展Flutter功能并实现跨平台通信的开发场景。

fiona2026的博客 377

Flutter框架跨平台鸿蒙开发——小票管家APP开发流程

Flutter跨平台鸿蒙应用开发摘要 本文介绍了使用Flutter框架开发跨平台小票管家APP的全流程。该应用具备小票管理、分类统计、金额计算等核心功能,采用Flutter 3.6.2+Dart 3.0.0技术栈,通过sqflite实现本地数据存储。开发过程包括项目初始化、分层架构设计、数据模型定义、数据库服务封装以及UI组件实现。重点展示了小票模型设计、SQLite持久化方案和列表页面交互逻辑,实现了包括滑动删除、下拉刷新等用户体验优化。最终应用可同时运行在Android/iOS/鸿蒙系统,验证了Flut

zilikew的博客 806
上一篇: fluttertpc_flutter_secure_storage 在鸿蒙上的使用指南
下一篇: Flutter analysis_defaults 在鸿蒙上的使用指南
NetPilot2025
博客等级 码龄1年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值