diff --git a/packages/lw_file_system_api/lib/src/data.dart b/packages/lw_file_system_api/lib/src/data.dart index c040851..4b44105 100644 --- a/packages/lw_file_system_api/lib/src/data.dart +++ b/packages/lw_file_system_api/lib/src/data.dart @@ -11,6 +11,8 @@ class ArchiveState with ArchiveStateMappable { final Set removed; const ArchiveState({this.added = const {}, this.removed = const {}}); + + bool get isDirty => added.isNotEmpty || removed.isNotEmpty; } abstract class ArchiveData { @@ -28,6 +30,9 @@ abstract class ArchiveData { state = ArchiveState(); Archive export() { + if (!state.isDirty) { + return this.archive; + } final archive = Archive(); for (final entry in state.added.entries) { archive.addFile(ArchiveFile(entry.key, entry.value.length, entry.value)); @@ -42,9 +47,8 @@ abstract class ArchiveData { return archive; } - List? exportBytes() { - return ZipEncoder().encode(export()); - } + Uint8List exportAsBytes() => + Uint8List.fromList(ZipEncoder().encode(export()) ?? []); Uint8List? getAsset(String name) { final added = state.added[name];