HarmonyOS鸿蒙Next中Flutter鸿蒙化文件下载写入相关

HarmonyOS鸿蒙Next中Flutter鸿蒙化文件下载写入相关 使用flutter实现下载文件通过BasicMessageChannel传输文件流信息,并且在鸿蒙原生中创建文件并接收文件流将数据存储到指定文件里能否支持

3 回复

BasicMessageChannel参考:
https://gitee.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/04_development/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Flutter%E4%B8%8E%E9%B8%BF%E8%92%99%E9%80%9A%E4%BF%A1%20FlutterChannel.md

dart代码:

int count = 0;

// 创建实例
final _basicChannel = const BasicMessageChannel(
    "samples.flutter.dev/basic_channel", StandardMessageCodec());

// 调用方法,获取平台侧的返回值
String result = await _basicChannel.send(++count) as String;

ets代码:

onAttachedToEngine(binding: FlutterPluginBinding): void {
    // 创建实例
    this.basicChannel = new BasicMessageChannel(binding.getBinaryMessenger(), "samples.flutter.dev/basic_channel", new StandardMessageCodec());

    // 设置回调,调用具体的实现
    this.basicChannel.setMessageHandler({
        onMessage(message: Any, reply: Reply<Any>) {
            Log.i(TAG, "message=" + message);

            if (message % 2 == 0) {
                reply.reply("run with if case.");
            } else {
                reply.reply("run with else case");
            }
        }
    })
}

flutter与鸿蒙原生通信后,鸿蒙可接收到flutter端传输的数据,后续使用鸿蒙的文件相关api进行操作,创建文件并写入数据

BasicMessageChannel参考:
https://gitee.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/04_development/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Flutter%E4%B8%8E%E9%B8%BF%E8%92%99%E9%80%9A%E4%BF%A1%20FlutterChannel.md

dart代码:

int count = 0;

// 创建实例
final _basicChannel = const BasicMessageChannel(
    "samples.flutter.dev/basic_channel", StandardMessageCodec());

// 调用方法,获取平台侧的返回值
String result = await _basicChannel.send(++count) as String;

ets代码:

onAttachedToEngine(binding: FlutterPluginBinding): void {
    // 创建实例
    this.basicChannel = new BasicMessageChannel(binding.getBinaryMessenger(), "samples.flutter.dev/basic_channel", new StandardMessageCodec());

    // 设置回调,调用具体的实现
    this.basicChannel.setMessageHandler({
        onMessage(message: Any, reply: Reply<Any>) {
            Log.i(TAG, "message=" + message);

            if (message % 2 == 0) {
                reply.reply("run with if case.");
            } else {
                reply.reply("run with else case");
            }
        }
    })
}

flutter与鸿蒙原生通信后,鸿蒙可接收到flutter端传输的数据,后续使用鸿蒙的文件相关api进行操作,创建文件并写入数据

更多关于HarmonyOS鸿蒙Next中Flutter鸿蒙化文件下载写入相关的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS Next中,Flutter鸿蒙化涉及文件下载与写入操作时,可以通过鸿蒙的分布式文件系统能力实现。鸿蒙提供了FileIO模块,支持文件的基本操作。对于文件下载,可以使用Http模块进行网络请求获取文件数据。文件写入则通过FileIOwrite方法完成。具体步骤如下:

  1. 文件下载:使用Http模块发起网络请求,获取文件数据流。可以通过HttpRequest类进行请求,并通过HttpResponse获取响应数据。

  2. 文件写入:将下载的文件数据流通过FileIO模块写入本地文件。可以使用File类创建或打开文件,并通过write方法将数据写入文件。鸿蒙的文件路径通常基于contextfilesDircacheDir

  3. 权限管理:确保在config.json中声明了ohos.permission.INTERNETohos.permission.WRITE_USER_STORAGE权限。

示例代码:

import http from '@ohos.net.http';
import fileio from '@ohos.fileio';

async function downloadAndWriteFile(url: string, filePath: string) {
    let httpRequest = http.createHttp();
    let response = await httpRequest.request(url);
    let file = await fileio.open(filePath, fileio.OpenMode.READ_WRITE | fileio.OpenMode.CREATE);
    await fileio.write(file.fd, response.result);
    fileio.close(file.fd);
}

以上代码展示了在HarmonyOS Next中通过Flutter鸿蒙化实现文件下载与写入的基本流程。

在HarmonyOS Next中,Flutter应用可以通过鸿蒙化的文件系统API实现文件下载与写入。首先,使用Diohttp库下载文件;然后,通过鸿蒙的File类将数据写入本地存储。确保在pubspec.yaml中声明存储权限,并在AndroidManifest.xml中配置相应权限。鸿蒙Next的文件操作与Android类似,但需注意鸿蒙特有的API调用和权限管理。

回到顶部