Flutter如何实现flutter_downloader下载成功功能
在Flutter项目中,我使用了flutter_downloader插件进行文件下载,但下载成功后不知道如何触发回调或通知。具体表现为:
- 文件确实下载到了指定路径,但无法在UI上实时更新状态
- 尝试过
DownloadCallback但回调没有被执行 - iOS和Android是否需要不同的配置?
请问如何正确实现下载成功后的回调处理?需要监听哪个事件或配置哪些参数?希望能提供具体代码示例。
2 回复
在Flutter中,使用flutter_downloader实现下载成功功能,需在DownloadCallback中监听DownloadTaskStatus.complete状态。示例代码:
FlutterDownloader.registerCallback((id, status, progress) {
if (status == DownloadTaskStatus.complete) {
print('下载完成,文件ID: $id');
}
});
确保在pubspec.yaml中添加依赖,并在Android/iOS配置相应权限。
更多关于Flutter如何实现flutter_downloader下载成功功能的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,使用flutter_downloader包实现下载成功功能,主要步骤如下:
-
添加依赖
在pubspec.yaml中添加:dependencies: flutter_downloader: ^1.10.2 -
初始化与权限配置
- 在
main()中初始化:void main() { WidgetsFlutterBinding.ensureInitialized(); await FlutterDownloader.initialize(); runApp(MyApp()); } - Android:在
AndroidManifest.xml添加存储权限。 - iOS:在
Info.plist中添加文件写入权限。
- 在
-
下载成功回调
使用FlutterDownloader.registerCallback设置回调:FlutterDownloader.registerCallback(downloadCallback); static void downloadCallback(String id, DownloadTaskStatus status, int progress) { if (status == DownloadTaskStatus.complete) { print("下载完成,文件ID: $id"); // 执行成功操作,如通知用户、更新UI等 } } -
触发下载
调用FlutterDownloader.enqueue开始下载:final taskId = await FlutterDownloader.enqueue( url: '文件URL', savedDir: '存储路径', showNotification: true, openFileFromNotification: true, ); -
处理下载结果
在回调中通过DownloadTaskStatus.complete判断成功,可结合本地通知或更新UI状态。
注意事项:
- 确保存储路径有效,Android需使用
getExternalStorageDirectory获取路径。 - iOS需配置后台模式支持。
- 实际应用中建议结合
provider或bloc管理下载状态。
通过以上步骤即可实现下载成功后的功能处理。

