论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
移动端开发
›
鸿蒙
›
鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙 ...
鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙
涛声依旧在
金牌会员
|
2024-12-3 16:00:57
|
显示全部楼层
|
阅读模式
楼主
主题
972
|
帖子
972
|
积分
2916
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
鸿蒙Flutter实战:现有Flutter项目支持鸿蒙
背景
原来使用Flutter开发的项目,必要适配鸿蒙。
环境搭建
见文章[鸿蒙Flutter适配指南],搭建开发环境,使用fvm管理多版本SDK。
模块化
原有项目保持模块化,拆分为 apps/common/components/modules/plugins等目录,如下所示:
.
├── README.md
├── analysis_options.yaml
├── melos.yaml
├── melos_ogw-flutter.iml
├── node_modules
├── packages
│ ├── README.md
│ ├── apps
│ │ ├── app
│ │ ├── dsm_app
│ │ ├── ohos_app
│ │ └── web
│ ├── common
│ │ ├── domains
│ │ ├── extensions
│ │ ├── services
│ │ └── widgets
│ ├── components
│ │ ├── image_uploader
│ │ ├── player
│ │ └── scroll_banner
│ ├── modules
│ │ ├── address
│ │ ├── community
│ │ ├── home
│ │ ├── invoice
│ │ ├── me
│ │ ├── message
│ │ ├── order
│ │ ├── shop
│ │ ├── support
│ │ ├── updater
│ └── plugins
│ ├── image_picker
│ ├── printer
├── pubspec.lock
├── pubspec.yaml
└── yarn.lock
复制代码
plugins 是依靠于原生平台的插件,
components 是平台无关的组件,
common 内里是领域对象,小组件,服务类,扩展等,平台无关,内里均为纯 Dart 代码。
apps 是应用外衣,通过组合不同的模块,向不同的平台打包。
使用 melos 管理多包仓库。
其中apps下的项目,则为必要打包成各平台,各app的入口项目。内里主要为项目配置代码,模块依靠配置,以及特定的平台适配代码。
在apps目录下新建鸿蒙项目,先把壳项目在鸿蒙中跑起来,确保没有题目。依次再添加依靠项,首先添加纯dart编写的包,再添加依靠于原生代码/插件的包。留意挨个添加依靠,不要一次添加太多依靠,方便排查定位题目,
办理版本依靠题目,鸿蒙Flutter项目现在必要依靠于3.7版本,假如原项目使用了更低的版本,则可将原项目SDK依靠升级至3.7;假如原项目SDK版本高于3.7,则有两种方案:一种是降级原项目SDK依靠为3.7;另外一种是使用多分支方案。
特定平台工程
在 apps 目录下新建一个项目,该项目运行鸿蒙平台适配和打包。
flutter create --platforms ohos ohos_app
复制代码
目录结构如下所示:
.
├── README.md
├── analysis_options.yaml
├── assets
│ ├── icons
│ │ ├── 2.0x
│ │ ├── 3.0x
│ │ └── placeholder.png
│ └── images
│ ├── 2.0x
│ └── 3.0x
├── build
│ ├── ...
├── env
├── lib
│ ├── config
│ │ ├── easy_refresh.dart
│ │ ├── routes.dart
│ │ └── theme.dart
│ └── main.dart
├── ohos
│ ├── AppScope
│ │ ├── app.json5
│ │ └── resources
│ ├── build-profile.json5
│ ├── entry
│ │ ├── build
│ │ ├── build-profile.json5
│ │ ├── hvigorfile.ts
│ │ ├── oh-package-lock.json5
│ │ ├── oh-package.json5
│ │ ├── oh_modules
│ │ └── src
│ ├── har
│ │ ├── ...
│ ├── hvigor
│ │ └── hvigor-config.json5
│ ├── hvigorfile.ts
│ ├── local.properties
│ ├── oh-package-lock.json5
│ ├── oh-package.json5
│ └── oh_modules
│ └── ...
├── pubspec.lock
└── pubspec.yaml
复制代码
可以看到,该项目只是一个壳工程,没有太多代码,主要为项目的一些特定配置,如主题、路由等,以及App入口初始化配置。
编辑 pubspec.yaml 文件,添加组件和模块依靠。
environment:
sdk: '>=2.19.6 <3.0.0'
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
# 下拉刷新
easy_refresh: ^3.0.4+2
flutter_dotenv: ^5.1.0
go_router: ^6.0.0
# 领域对象
domains:
path: '../../common/domains'
services:
path: '../../common/services'
widgets:
path: '../../common/widgets'
address:
path: '../../modules/address'
support:
path: '../../modules/support'
me:
path: '../../modules/me'
message:
path: '../../modules/message'
order:
path: '../../modules/order'
shop:
path: '../../modules/shop'
home:
path: '../../modules/home'
复制代码
配置对特定插件进行鸿蒙化适配
部门第三方插件以及插件依靠的其他库,假如没有适配鸿蒙,则可以通过 override配置鸿蒙化的版本
dependency_overrides:
# ohos
path_provider:
git:
url: "https://gitee.com/openharmony-sig/flutter_packages.git"
path: "packages/path_provider/path_provider"
复制代码
编译运行
运行 Flutter 项目,查看相干日记和运行界面,针对出现的题目再单独处置惩罚。
查看日记,可以在运行Flutter处的IDE调试控制台查看 Flutter 项目日记,可以使用 hdc hilog 下令或DevEco 查看系统日记。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
涛声依旧在
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL基本SQL语句之高级操作
maven配置步骤及问题
Juc并发编程12——2万字深入源码:线程 ...
史上最全MongoDB之部署篇
IOS OpenGL ES GPUImage 图像黑白色调 ...
【云原生】裸金属架构之服务器安装VMWa ...
Flink-基于 DataStream API 实现欺诈检 ...
一文读懂K-Means原理与Python实现 ...
大数据ETL开发之图解Kettle工具(入门 ...
为什么说 Go 语言字符串是不可变的? ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Postrge-SQL技术社区
备份
快速回复
返回顶部
返回列表