Flutter如何使用flutter_downloader插件

我在Flutter项目中集成了flutter_downloader插件,但遇到几个问题想请教:

  1. 下载文件时如何监听进度并更新UI?
  2. 下载完成后如何自动打开文件?
  3. 插件报错"MissingPluginException"该如何解决?
  4. 如何在AndroidManifest.xml和Info.plist中正确配置权限?
  5. 多文件下载时如何管理队列和并发数?
2 回复

使用flutter_downloader插件步骤:

  1. 在pubspec.yaml添加依赖
  2. 配置Android权限和iOS设置
  3. 初始化插件
  4. 注册下载回调
  5. 调用download方法开始下载

示例代码:

await FlutterDownloader.enqueue(
  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"/>

iOS(Info.plist):

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

3. 初始化插件

main()中:

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

4. 基本下载功能

import 'package:flutter_downloader/flutter_downloader.dart';

// 开始下载
final taskId = await FlutterDownloader.enqueue(
  url: 'https://example.com/file.zip',
  savedDir: '/storage/emulated/0/Download',
  fileName: 'file.zip',
  showNotification: true,
  openFileFromNotification: true,
);

// 监听下载进度
FlutterDownloader.registerCallback((id, status, progress) {
  if (id == taskId) {
    print('下载进度: $progress%');
  }
});

5. 管理下载任务

// 暂停下载
await FlutterDownloader.pause(taskId);

// 恢复下载
await FlutterDownloader.resume(taskId);

// 取消下载
await FlutterDownloader.cancel(taskId);

// 重试下载
await FlutterDownloader.retry(taskId);

6. 权限处理(Android)

使用permission_handler请求存储权限:

final status = await Permission.storage.request();
if (status.isGranted) {
  // 开始下载
}

注意事项:

  • iOS需要配置后台模式
  • 路径需使用有效可写目录
  • 真实设备测试网络权限
  • 建议使用最新插件版本

通过以上步骤即可实现Flutter应用中的文件下载功能。

回到顶部