Flutter开发HarmonyOS鸿蒙Next应用的时候dart.ui包下image.toByteData()无法返回数据

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 Flutter

Flutter开发HarmonyOS鸿蒙Next应用的时候dart.ui包下image.toByteData()无法返回数据
【模块名_概率】简要描述: 包名是dart:ui

【环境信息】:

  • 网络环境 无
  • 硬件开发板型号 Mac Arm框架 DevEco虚拟机
  • 软件版本信息或tag节点 3.7.12-ohos-1.0.0 stable
  • 测试环境 NEXT.0.0.71
  • 其他

【预置条件】:

import 'dart:ui' as ui;

Future<ui.Image> _loadImageFromAssets(String assetPath) async {
    ByteData data = await rootBundle.load(assetPath);
    Uint8List bytes = data.buffer.asUint8List();
    final Completer<ui.Image> completer = Completer();
    ui.decodeImageFromList(bytes, (ui.Image img) {
      return completer.complete(img);
    });
    return completer.future;
  }

ui.Image logo = await _loadImageFromAssets("images/logo.png");

ByteData? byteData = await logo.toByteData(format: ui.ImageByteFormat.png); //该句不执行,也没有报错信息,debug则会显示闭包某个信息为空的thrown。

【测试步骤】:

【预期结果】: 应该返回正确的byteData

【实际结果】: 卡着不动,这条语句的后面的代码也无法执行。

【恢复手段】:

【出现概率】:问题出现次数/实际测试次数 100%

【定位信息】: 包名是dart:ui

    1. Log、截图、多媒体文件等,所有和问题有关的信息:
2 回复

伙伴你好,这个问题麻烦您提个ir单跟踪处理哈 https://issuereporter.developer.huawei.com/

在Flutter开发HarmonyOS鸿蒙Next应用时,遇到dart.ui包下的image.toByteData()无法返回数据的问题,通常可能是由于以下几个原因导致的:

  1. 图像格式或尺寸问题:确保传递给toByteData()的图像是有效的,并且其格式(如RGBA、ARGB等)和尺寸在鸿蒙系统的环境中被支持。

  2. 权限问题:鸿蒙系统可能对图像数据的访问有特定的权限要求,检查应用是否已经获得了相应的权限。

  3. 系统限制:鸿蒙系统可能对图像处理的API有不同的实现或限制,导致toByteData()在某些情况下无法正常工作。

  4. 环境差异:Flutter在不同平台(如Android、iOS、鸿蒙)上的行为可能有所不同,尤其是在处理底层图像数据时。

  5. API兼容性问题:确保你使用的Flutter和鸿蒙SDK版本兼容,并且toByteData()方法在你当前的环境中是有效的。

如果以上检查都未能解决问题,可能是由于更深层次的系统或框架问题。在这种情况下,建议直接联系鸿蒙开发者支持或访问官网客服以获取更专业的帮助。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部