flutter_downloader如何使用

我在Flutter项目中集成了flutter_downloader插件,但不太清楚具体如何使用。能否详细说明如何配置AndroidManifest.xml和Info.plist文件?另外想请教下载任务的基本操作流程,比如如何开始、暂停、恢复和取消下载?插件支持并发下载和后台任务吗?遇到下载失败时有哪些常见的错误处理方式?

2 回复

FlutterDownloader 是一个用于在 Flutter 应用中实现文件下载功能的插件。以下是基本使用方法:

  1. 添加依赖:在 pubspec.yaml 文件中添加:

    dependencies:
      flutter_downloader: ^1.10.2
    
  2. 初始化:在 main() 函数中初始化插件:

    void main() {
      WidgetsFlutterBinding.ensureInitialized();
      FlutterDownloader.initialize();
      runApp(MyApp());
    }
    
  3. 下载文件:使用 FlutterDownloader.enqueue() 方法:

    final taskId = await FlutterDownloader.enqueue(
      url: '文件URL',
      savedDir: '保存路径',
      fileName: '文件名',
      showNotification: true,
      openFileFromNotification: true,
    );
    
  4. 监听下载进度:通过 FlutterDownloader.registerCallback 设置回调函数,处理下载状态和进度。

  5. 注意事项

    • Android 需要配置存储权限。
    • iOS 需在 Info.plist 中添加网络权限。

简单几步即可实现文件下载功能!

更多关于flutter_downloader如何使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Flutter Downloader 是一个用于在 Flutter 应用中实现文件下载功能的插件。以下是基本使用方法:

安装配置

  1. pubspec.yaml 中添加依赖:
dependencies:
  flutter_downloader: ^1.11.7
  1. 配置平台特定设置:

Android - 在 AndroidManifest.xml 添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

iOS - 在 Info.plist 中添加:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

基本使用

import 'package:flutter_downloader/flutter_downloader.dart';

class DownloadExample {
  // 初始化
  static Future<void> initialize() async {
    await FlutterDownloader.initialize(debug: true);
  }

  // 开始下载
  static Future<String?> downloadFile(String url, String savedDir) async {
    final taskId = await FlutterDownloader.enqueue(
      url: url,
      savedDir: savedDir,
      showNotification: true,
      openFileFromNotification: true,
    );
    return taskId;
  }

  // 监听下载进度
  static void listenToProgress() {
    FlutterDownloader.registerCallback(downloadCallback);
  }

  @pragma('vm:entry-point')
  static void downloadCallback(String id, DownloadTaskStatus status, int progress) {
    print('任务ID: $id, 状态: $status, 进度: $progress%');
  }
}

常用方法

  • FlutterDownloader.enqueue() - 开始下载
  • FlutterDownloader.loadTasks() - 获取所有下载任务
  • FlutterDownloader.cancel() - 取消下载
  • FlutterDownloader.remove() - 删除任务
  • FlutterDownloader.open() - 打开已下载文件
  • FlutterDownloader.retry() - 重试失败的任务

注意事项

  1. 确保应用有存储权限
  2. iOS 需要配置后台下载能力
  3. 使用前务必调用 initialize() 方法
  4. 回调函数需要使用 @pragma('vm:entry-point') 注解

这是一个基础的下载管理器实现,适合大多数文件下载需求。

回到顶部