期待已久的flutter_boost鸿蒙适配初步完毕了。目前基于4.4.2版本,核心功能已经开发完毕,但因为源于鸿蒙版本的flutter引擎还在迭代中,部分接口可能会有细调整,但大致不会有大改。
本分支会等待稳定后会择期合会到master分支
如遇问题,欢迎反馈另开issue反馈,issue仅用于安装说明指引🤪
熟悉fluttrboost的老司机,直接切换至 main 分支即可
pubspec.yaml
flutter_boost: git: url: "git@github.com:alibaba/flutter_boost.git" ref: "main"
详看:https://github.com/alibaba/flutter_boost/blob/main/docs/install.md
如果一切还很懵逼,先运行一下example看看。代码也直接参考example的代码
https://gitee.com/openharmony-sig/flutter_flutter dev或者master 分支都行
比如我的是这样的,按葫芦画瓢即可
hwsdk.dir=/Users/xiaoxiang/Library/Huawei/Sdk sdk.dir=/Users/xiaoxiang/Library/Huawei/Sdk/openharmony nodejs.dir=/Users/xiaoxiang/node/node-16.20.1
打开AndrioidStudio,插上真机直接运行即可
PS:现在直接打包到flutter_flutter的libflutter.so和har包可能会比较旧,建议自己编译flutter_engine,然后通过local engine的方式运行
附上我的local engine的参数: --local-engine-src-path /Users/xiaoxiang/Documents/code/ali_flutter_engine/ohos_flutter_engine/src --local-engine ohos_debug_unopt_arm64
--local-engine-src-path /Users/xiaoxiang/Documents/code/ali_flutter_engine/ohos_flutter_engine/src --local-engine ohos_debug_unopt_arm64
解决办法: 签名问题,使用DevEcoStuido 打开flutter_boost/example/ohos,然后直接运行后,按照提示签名即可。再重新会到AndrdoiStudio重新运行
创建issue,添加 OHOS label即可
👍🏻,我来验验
very nice~
正式版大概什么时候能出呢?这版功能好像还不完善,flutter打开native页面、打开带容器的flutter还不支持
你说的这两个都有的。详看 https://github.com/alibaba/flutter_boost/blob/task/4.4.2-support-ohos/docs/install.md
1.flutter打开native页面
有对应FlutterBoostDelegate的pushNativeRoute函数
有对应FlutterBoostDelegate的pushFlutterRoute函数,可以自定义在当前UIAbility打开,还是另开一个UIAbility,都是可以定制的
demo中 打开flutter页面时闪退
这是已知flutter_flutter在api11出现的重复har包bug,
https://gitee.com/openharmony-sig/flutter_flutter/pulls/157/files 已经修复。需要更新flutter_flutter到最新的dev分支。
类似这个 #1579 问题,鸿蒙里面怎么设置第一个页面为 flutter页面,鸿蒙框架下面跟安卓ios 差别挺大的
参考example里面的EntryPage.ets
类似这个 #1579 问题,鸿蒙里面怎么设置第一个页面为 flutter页面,鸿蒙框架下面跟安卓ios 差别挺大的 参考example里面的EntryPage.ets
好的已解决
@xiaoxiaowesley
@xiaoxiaowesley 手机的物理退后页面看起来有问题呢? 直接退出整个app了。FlutterA=>FlutterB withContainer 设置成 flase 没有全屏到状态栏
你重新提一个issue吧,附上代码,来详细跟进
@xiaoxiaowesley 手机的物理退后页面看起来有问题呢? 直接退出整个app了。FlutterA=>FlutterB withContainer 设置成 flase 没有全屏到状态栏 你重新提一个issue吧,附上代码,来详细跟进
#1969 和 #1970
编译出来的har,icudata.dat占了10m,太大了,是不是可以移除掉
这是flutter相关,不和flutterboost相关。请到flutter_engine相关gitee上提交issue
详细鸿蒙版安装flutterboost教程 (addToApp):详看:https://github.com/alibaba/flutter_boost/blob/task/4.4.2-support-ohos/docs/install.md,这个地址404啊,能重新弄一下吗
已经更新
从鸿蒙打开Flutter页面,怎么把鸿蒙页面关闭呢
我们现在使用的混合开发模式,一个鸿蒙页面中上半部分是鸿蒙原生页面,下半部分是flutter页面,flutter页面我们使用FlutterBoostPage包起来的:FlutterBoostPage({ viewId: this.flutterView?.getId() })
问题:现在的问题是FlutterBoostPage包起来后必须要设置个精确的height,否则会有半屏的内容滑动不上去(应该是上半部分原生组件的高度),是不是FlutterBoostPage包起来后的组件默认高度是不是屏幕高度呀?
Column() { Button("按钮") .backgroundColor(Color.Red) .height(100) .width(100) FlutterBoostPage({ viewId: this.flutterView?.getId() }) .height(this.flutterViewHeight) } .height('100%') .width('100%')
02-12 15:58:51.507 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: Null check operator used on a null value 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #0 BoostPage.createRoute (package:flutter_boost/src/flutter_boost_app.dart:774) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #1 NavigatorState.restoreState (package:flutter/src/widgets/navigator.dart:3622) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #2 RestorationMixin._doRestore (package:flutter/src/widgets/restoration.dart:924) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #3 RestorationMixin.didChangeDependencies (package:flutter/src/widgets/restoration.dart:910) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #4 NavigatorState.didChangeDependencies (package:flutter/src/widgets/navigator.dart:3690) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #5 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5636) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #6 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #7 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #8 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #9 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #10 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #11 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5469) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #12 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #13 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #14 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #15 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #16 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5650) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #17 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5469) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #19 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5641) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #22 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #23 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #24 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5469) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #26 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #27 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #28 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #29 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #30 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #31 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5469) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #32 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #34 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #35 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #36 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5650) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #37 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #38 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5469) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #39 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5641) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #40 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #41 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #42 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #43 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #44 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5650) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #45 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #46 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5469) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #47 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5641) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #48 ComponentElement.mount (package:flutter/src/widgets/framework.dart:5463) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #49 Element.inflateWidget (package:flutter/src/widgets/framework.dart:4340) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #50 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6904) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #51 Element.updateChild (package:flutter/src/widgets/framework.dart:3849) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #52 Element.updateChildren (package:flutter/src/widgets/framework.dart:4036) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #53 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6929) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #54 Element.updateChild (package:flutter/src/widgets/framework.dart:3827) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #55 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5512) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #56 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5650) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #57 Element.rebuild (package:flutter/src/widgets/framework.dart:5203) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #58 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2905) 02-12 15:58:51.509 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #59 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1136) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #60 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:443) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #61 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1392) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #62 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1313) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #63 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1171) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #64 _invoke (dart:ui/hooks.dart:312) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #65 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:420) 02-12 15:58:51.510 43533 43673 W A00000/com.hcbnjy.harmonyapp/XComFlutterOHOS_Native: flutter settings log message: #66 _drawFrame (dart:ui/hooks.dart:283)
最新版本 release模式下页面显示不出来是啥问题
引擎初始化 不成功,也不走回调。走下面截图这个 节点。
请问什么时候harmony版 可以支持flutter sdk 3.22.0 以上版本
Activity
hbwangcaihua commentedon Jan 31, 2024
👍🏻,我来验验
BaseBBHuang commentedon Feb 1, 2024
very nice~
hbwangcaihua commentedon Feb 5, 2024
正式版大概什么时候能出呢?这版功能好像还不完善,flutter打开native页面、打开带容器的flutter还不支持
xiaoxiaowesley commentedon Feb 20, 2024
你说的这两个都有的。详看 https://github.com/alibaba/flutter_boost/blob/task/4.4.2-support-ohos/docs/install.md
1.flutter打开native页面
有对应FlutterBoostDelegate的pushNativeRoute函数
有对应FlutterBoostDelegate的pushFlutterRoute函数,可以自定义在当前UIAbility打开,还是另开一个UIAbility,都是可以定制的
Leon-ele commentedon Feb 27, 2024
demo中 打开flutter页面时闪退

xiaoxiaowesley commentedon Feb 28, 2024
这是已知flutter_flutter在api11出现的重复har包bug,
https://gitee.com/openharmony-sig/flutter_flutter/pulls/157/files
已经修复。需要更新flutter_flutter到最新的dev分支。
zmtzawqlp commentedon Feb 28, 2024
类似这个 #1579 问题,鸿蒙里面怎么设置第一个页面为 flutter页面,鸿蒙框架下面跟安卓ios 差别挺大的
xiaoxiaowesley commentedon Feb 28, 2024
参考example里面的EntryPage.ets
zmtzawqlp commentedon Feb 28, 2024
好的已解决
zmtzawqlp commentedon Feb 28, 2024
@xiaoxiaowesley
xiaoxiaowesley commentedon Feb 29, 2024
你重新提一个issue吧,附上代码,来详细跟进
zmtzawqlp commentedon Feb 29, 2024
#1969 和 #1970
hoooou commentedon Mar 7, 2024
编译出来的har,icudata.dat占了10m,太大了,是不是可以移除掉
xiaoxiaowesley commentedon Mar 12, 2024
这是flutter相关,不和flutterboost相关。请到flutter_engine相关gitee上提交issue
wangqiaoguang commentedon May 13, 2024
详细鸿蒙版安装flutterboost教程 (addToApp):详看:https://github.com/alibaba/flutter_boost/blob/task/4.4.2-support-ohos/docs/install.md,这个地址404啊,能重新弄一下吗
xiaoxiaowesley commentedon May 21, 2024
已经更新
jayjayjay16 commentedon Jul 3, 2024
从鸿蒙打开Flutter页面,怎么把鸿蒙页面关闭呢
MichaelSSY commentedon Aug 26, 2024
我们现在使用的混合开发模式,一个鸿蒙页面中上半部分是鸿蒙原生页面,下半部分是flutter页面,flutter页面我们使用FlutterBoostPage包起来的:FlutterBoostPage({ viewId: this.flutterView?.getId() })
问题:现在的问题是FlutterBoostPage包起来后必须要设置个精确的height,否则会有半屏的内容滑动不上去(应该是上半部分原生组件的高度),是不是FlutterBoostPage包起来后的组件默认高度是不是屏幕高度呀?
Column() {
Button("按钮")
.backgroundColor(Color.Red)
.height(100)
.width(100)
FlutterBoostPage({ viewId: this.flutterView?.getId() })
.height(this.flutterViewHeight)
}
.height('100%')
.width('100%')
thesnail commentedon Feb 12, 2025
最新版本 release模式下页面显示不出来是啥问题
wangshaowen1 commentedon Apr 17, 2025
引擎初始化 不成功,也不走回调。走下面截图这个 节点。
llishiqiang1314 commentedon Jul 7, 2025
请问什么时候harmony版 可以支持flutter sdk 3.22.0 以上版本