downloadFile function

Future<void> downloadFile(
  1. String url, [
  2. String? filename
])

Implementation

Future<void> downloadFile(String url, [String? filename]) async {
  try {
    logDebug('Initiating file download', {'url': url, 'filename': filename});
    if (url.isEmpty) throw Exception('Invalid URL provided for download');
    final uri = Uri.tryParse(url);
    if (uri == null || !await canLaunchUrl(uri)) {
      throw Exception('Cannot open the provided URL');
    }
    await launchUrl(uri, mode: LaunchMode.externalApplication);
    logDebug('File download initiated successfully');
  } catch (e) {
    logError('File download failed', {'url': url, 'filename': filename, 'error': e});
    rethrow;
  }
}