云天逵 1 год назад
Родитель
Сommit
a878c24fe5
1 измененных файлов с 33 добавлено и 3 удалено
  1. 33 3
      lib/utils/file_size_calculator_util.dart

+ 33 - 3
lib/utils/file_size_calculator_util.dart

@@ -18,11 +18,41 @@ class FileSizeCalculatorUtil {
       return;
     }
     double totalSize = 0;
-    totalSize =
-        await ClassifyPhoto().calculatePhotosSize(assetIds.toList()) / 1024;
+    const batchSize = 20;
+    final idList = assetIds.toList();
+
+    for (int i = 0; i < idList.length; i += batchSize) {
+      if (assetIds.isEmpty) {
+        updateValue(0);
+        return;
+      }
+
+      final batch = idList.skip(i).take(batchSize);
+
+      final sizes = await Future.wait(
+        batch.map((id) async {
+          try {
+            final size = await ClassifyPhoto().calculatePhotosSize([id]);
+            return size / 1024; // 转 KB
+          } catch (e) {
+            return 0.0;
+          }
+        }),
+      );
+
+      totalSize += sizes.fold(0.0, (sum, size) => sum + size);
+
+      if (assetIds.isEmpty) {
+        updateValue(0);
+        return;
+      }
+
+      await Future.delayed(Duration.zero); // 避免卡 UI
+      updateValue(totalSize);
+    }
+
     updateValue(totalSize);
   }
-
   static Future<void> calculateTotalSizeByAndroid({
     required Set<String> assetIds,
     required Function(double) updateValue,