Flutter开发HarmonyOS鸿蒙Next应用的时候channel传递number类型问题如何实现

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

Flutter开发HarmonyOS鸿蒙Next应用的时候channel传递number类型问题如何实现
【任务描述】 从鸿蒙通过channel传一个number类型的0.0,到flutter侧后会自动变成int,如果flutter相关框架是以double类型接收的,会报type ‘int’ is not a subtype of type ‘double?’ in type cast

比如这块代码 final double vol = (await _channel.invokeMethod<double>(‘getVolume’)) ?? 0.0;

3 回复

ets里面怎么定义的0.0啊?

dart不能自动进行类型转换,需要按照具体的int 、double类型做处理。

在Flutter开发HarmonyOS鸿蒙Next应用时,若要通过channel传递number类型数据,通常可以将其转换为字符串格式进行传输,接收端再转换回数字格式。这是因为在跨平台通信中,很多通信机制(如Intent、MethodChannel等)默认只支持基本数据类型如字符串、布尔值等。

具体实现步骤如下:

  1. 发送端(Flutter)

    • 使用MethodChannel将number类型数据转换为字符串发送。
    • 示例代码:MethodChannel(binaryMessenger: binaryMessenger, name: "your_channel_name").invokeMethod("sendNumber", number.toString());
  2. 接收端(HarmonyOS)

    • 在鸿蒙端接收字符串,并转换为number类型。
    • 示例代码:接收字符串后,使用Integer.parseInt(string)Double.parseDouble(string)进行转换。
  3. 确保两端channel名称一致

    • 确保Flutter端和鸿蒙端定义的channel名称完全相同,以便正确通信。
  4. 错误处理

    • 添加必要的错误处理机制,以应对数据转换失败或通信异常的情况。

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

回到顶部