downloadFile static method

Future<String> downloadFile({
  1. required String source,
  2. required String fileExtension,
  3. String? customFileName,
  4. BuildContext? context,
})

Download file to Downloads folder

Implementation

static Future<String> downloadFile({
  required String source,
  required String fileExtension,
  String? customFileName,
  BuildContext? context,
}) async {
  FileData? fileData;
  try {
    fileData = await loadFile(source, fileExtension);

    final downloadsDir = await _getDownloadsDirectory();

    final fileName =
        customFileName ??
        'download_${DateTime.now().millisecondsSinceEpoch}$fileExtension';
    final savePath = '${downloadsDir.path}/$fileName';

    final file = File(savePath);
    await file.writeAsBytes(fileData.bytes);

    if (context != null && context.mounted) {
      _showSuccess(context, 'Saved: $savePath');
    }

    return savePath;
  } catch (e) {
    if (context != null && context.mounted) {
      _showError(context, 'Download error: $e');
    }
    rethrow;
  } finally {
    // ✅ Cleanup temp file after download
    await fileData?.cleanup();
  }
}