downloadAndUnzipImages method
Future<void>
downloadAndUnzipImages()
Implementation
Future<void> downloadAndUnzipImages() async {
const url = 'https://api.corpoamazonia.gov.co/downloads/img.zip';
isDownloading.value = true;
progress.value = 0;
final dir = await getApplicationDocumentsDirectory();
final imageDir = Directory('${dir.path}/images');
if (!await imageDir.exists()) {
await imageDir.create(recursive: true);
}
try {
final dio = Dio(BaseOptions(
connectTimeout: const Duration(minutes: 2),
receiveTimeout: const Duration(minutes: 5),
responseType: ResponseType.bytes,
));
final response = await dio.get<List<int>>(url, onReceiveProgress: (r, t) {
if (t != 0) progress.value = r / t;
});
final zipBytes = response.data!;
final archive = ZipDecoder().decodeBytes(zipBytes);
for (final file in archive) {
if (!file.isFile) continue;
final outPath = '${imageDir.path}/${file.name}';
final outFile = File(outPath);
await outFile.create(recursive: true);
await outFile.writeAsBytes(file.content as List<int>);
}
} finally {
isDownloading.value = false;
}
}