Flutter如何利用flutter_downloader插件实现文件下载

在Flutter项目中集成flutter_downloader插件时遇到几个问题:1) 下载文件到指定目录的路径该如何正确配置?2) 如何监听下载进度并更新UI?3) 下载任务异常中断后如何实现断点续传?4) 在Android和iOS平台上是否需要分别进行特殊配置?希望能得到具体代码示例和最佳实践指导。

2 回复

使用flutter_downloader插件实现文件下载步骤:

  1. 添加依赖到pubspec.yaml
  2. 配置Android和iOS权限
  3. 初始化插件
  4. 定义下载任务回调
  5. 调用download方法开始下载
  6. 监听下载进度和状态

示例代码:

await FlutterDownloader.enqueue(
  url: '文件URL',
  savedDir: '保存路径',
);

更多关于Flutter如何利用flutter_downloader插件实现文件下载的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter 中可以使用 flutter_downloader 插件实现文件下载功能,以下是具体步骤和示例代码:

1. 添加依赖

pubspec.yaml 中添加依赖:

dependencies:
  flutter_downloader: ^1.11.7

运行 flutter pub get 安装插件。

2. 配置权限

Android 配置

  • AndroidManifest.xml 中添加网络权限和存储权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • android/app/build.gradle 中设置 minSdkVersion 至少为 16。

iOS 配置

  • Info.plist 中添加以下权限(用于保存到相册):
<key>NSPhotoLibraryAddUsageDescription</key>
<string>需要访问相册以保存文件</string>

3. 初始化插件

main() 函数中初始化插件:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FlutterDownloader.initialize();
  runApp(MyApp());
}

4. 实现下载功能

import 'package:flutter_downloader/flutter_downloader.dart';

// 请求存储权限(使用 permission_handler 插件)
// 下载文件函数
Future<void> downloadFile(String url, String fileName) async {
  final status = await Permission.storage.request();
  if (status.isGranted) {
    final taskId = await FlutterDownloader.enqueue(
      url: url,
      savedDir: '/storage/emulated/0/Download', // Android 下载路径
      fileName: fileName,
      showNotification: true,
      openFileFromNotification: true,
    );
    print('下载任务ID: $taskId');
  }
}

5. 监听下载状态

// 在 initState 中注册监听
@override
void initState() {
  super.initState();
  FlutterDownloader.registerCallback(downloadCallback);
}

// 下载状态回调
static void downloadCallback(String id, DownloadTaskStatus status, int progress) {
  print('任务ID: $id, 状态: $status, 进度: $progress%');
}

6. 注意事项

  • 需要动态申请存储权限(Android 6.0+ 使用 permission_handler 插件)。
  • iOS 需配置后台模式(在 Info.plist 中添加 UIBackgroundModes 字段)。
  • 下载路径需根据平台调整(iOS 需使用合法路径如 Documents 目录)。

通过以上步骤即可实现文件下载功能,支持后台下载和进度监控。

回到顶部