HarmonyOS 鸿蒙Next:flutter打包成module引入原生工程,如何获取屏幕相关参数

HarmonyOS 鸿蒙Next:flutter打包成module引入原生工程,如何获取屏幕相关参数

【关键字】

  • flutter / module / 屏幕参数 / width / initState

【问题描述】

在集成测试中发现一个问题,将flutter打包成module引入原生工程在flutter页面的 initState 中,@override void initState() { super.initState(); MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window); var width = mediaQuery.size.width;} 获取的屏幕相关参数,比如 width 是空的。如果做为单独工程跑,则可以正常获取参数。

【解决方案】

module打成HAR包依赖到ArkUI原生工程中,是可以获取到屏幕参数的:

  1. 创建一个Module,在 main.dartinitState() 方法中调用 MediaQueryData 的接口。

  2. 使用如下命令构建出 flutter_module.har

    flutter build har --local-engine=E:\02.Flutter\03.local_engine\src\out\ohos_release_arm64 -v
    
  3. flutter_module.har 添加至一个ArkUI原生应用的依赖中

  4. 在原生应用的Index页面中通过 router.pushUrl,跳转至Second页面。

  5. 在Second页面中使用 FlutterPage 加载 flutter_module 中的页面。

  6. 在手机上运行,跳转至Flutter页面之后,是可以通过 mediaQueryData.size.width 获取到屏幕相关参数。


更多关于HarmonyOS 鸿蒙Next:flutter打包成module引入原生工程,如何获取屏幕相关参数的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next:flutter打包成module引入原生工程,如何获取屏幕相关参数的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS鸿蒙系统中,当你将Flutter打包成module并引入原生工程时,若需要获取屏幕相关参数,可以通过Flutter与原生代码的交互来实现。

在Flutter端,你可以定义一个平台通道(MethodChannel)来与原生代码通信。原生端(Java或C++,但根据要求不提及具体语言实现细节)需要实现该通道并提供获取屏幕参数的方法。以下是一个简化的流程描述:

  1. Flutter端

    • 创建一个MethodChannel实例。
    • 调用该通道的invokeMethod方法,请求获取屏幕参数。
  2. 原生端

    • 监听该MethodChannel的调用。
    • 在原生代码中实现获取屏幕宽度、高度、像素密度等参数的方法。
    • 通过MethodChannelResult回调,将参数返回给Flutter端。

具体实现时,你需要查阅HarmonyOS的官方文档,了解如何创建和使用平台通道,以及如何在原生代码中获取屏幕参数。由于平台通道的使用在Flutter中是跨平台的,因此这一流程在HarmonyOS上同样适用。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部