From 8ca1e09c860275d2e751b040ca87b15779ed09b8 Mon Sep 17 00:00:00 2001 From: Elliot Fleet Date: Sun, 11 Jun 2023 06:13:07 -0700 Subject: [PATCH] Extract zip files in a stream --- lib/providers/apps_provider.dart | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/lib/providers/apps_provider.dart b/lib/providers/apps_provider.dart index 47dfbde..4f69583 100644 --- a/lib/providers/apps_provider.dart +++ b/lib/providers/apps_provider.dart @@ -27,7 +27,7 @@ import 'package:flutter_fgbg/flutter_fgbg.dart'; import 'package:obtainium/providers/source_provider.dart'; import 'package:http/http.dart'; import 'package:android_intent_plus/android_intent.dart'; -import 'package:archive/archive.dart'; +import 'package:archive/archive_io.dart'; class AppInMemory { late App app; @@ -333,20 +333,9 @@ class AppsProvider with ChangeNotifier { } void unzipFile(String filePath, String destinationPath) { - final bytes = File(filePath).readAsBytesSync(); - final archive = ZipDecoder().decodeBytes(bytes); - - for (final file in archive) { - final filename = '$destinationPath/${file.name}'; - if (file.isFile) { - final data = file.content as List; - File(filename) - ..createSync(recursive: true) - ..writeAsBytesSync(data); - } else { - Directory(filename).create(recursive: true); - } - } + final inputStream = InputFileStream(filePath); + final archive = ZipDecoder().decodeBuffer(inputStream); + extractArchiveToDisk(archive, destinationPath); } Future installXApkDir(DownloadedXApkDir dir,