flutter_downloader完成后自动打开文件

yruzcnhs  于 2023-01-21  发布在  Flutter
关注(0)|答案(2)|浏览(101)

所以我尝试使用flutter_downloader包在flutter中使用下载管理器。我设法让我的应用下载我想要的文件。我如何让我的应用更高级?我希望我的应用能够在下载完成时自动打开下载的文件。
另一个问题是,如果我已经下载了文件第一次如何使按钮触发打开文件的位置,而不是下载文件了?
下面是我当前的代码:

TextButton(
    child: Text(
      ticketData['file_attachment_map'][index]['name'],
      style: primaryColor600Style.copyWith(fontSize:14.sp),
    ),
    
    onPressed: () async {
      final permissionStatus = await Permission.storage.request();
    
      if (permissionStatus.isGranted) {
      final externalDir = await getExternalStorageDirectory();
    
      final taskId =await FlutterDownloader.enqueue(
        url: ticketData['file_attachment_map']
        [index]['url'],
        savedDir:externalDir!.path,
        showNotification:true,
        openFileFromNotification:true,
        );
      } else {
        print('Permission denied');
      }
    },
  ),
mqxuamgl

mqxuamgl1#

下载后使用open_file

if(taskId != null){
    await OpenFile.open(filePath);
  }
}

并且您可以在下载文件之前检查文件是否存在

import 'dart:io';
File("path/to/file").exists()
gcuhipw9

gcuhipw92#

作为@ Xuan Thucc答案的补充,您可以使用open_filex,它是 open_file 的一个分支,但维护得更好,并修复了原始lib的许多问题。

import 'package:open_filex/open_filex.dart';

// in async function
await OpenFilex.open(filePath);

相关问题