downloadFile function
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;
}
}