extractToDirectory static method
Future<void>
extractToDirectory({
- required File zipFile,
- required Directory destinationDir,
- OnExtracting? onExtracting,
- String? zipFileCharset,
Extract zipFile
to a given destinationDir
. Optional callback function
onExtracting
is called before extracting a zip entry.
onExtracting
must return one of the following values:
ZipFileOperation.includeItem - extract this file/directory
ZipFileOperation.skipItem - do not extract this file/directory
ZipFileOperation.cancel - cancel the operation
In iOS and Android (API level >= 24) you can also specify the charset
zipFileCharset
to be used to decode the ZIP entry names and comments.
The enum Charsets defines the most common values
(use e.g. Charsets.UTF_8.name
).
More information: https://developer.android.com/reference/java/util/zip/ZipFile#ZipFile(java.lang.String,%20java.nio.charset.Charset)
Implementation
static Future<void> extractToDirectory({
required File zipFile,
required Directory destinationDir,
OnExtracting? onExtracting,
String? zipFileCharset,
}) async {
final reportProgress = onExtracting != null;
if (reportProgress) {
if (!_isMethodCallHandlerSet) {
_channel.setMethodCallHandler(_channelMethodCallHandler);
_isMethodCallHandlerSet = true;
}
}
final jobId = ++_jobId;
try {
if (onExtracting != null) {
_onExtractingHandlerByJobId[jobId] = onExtracting;
}
await _channel.invokeMethod<void>('unzip', <String, dynamic>{
'zipFile': zipFile.path,
'zipFileCharset': zipFileCharset,
'destinationDir': destinationDir.path,
'reportProgress': reportProgress,
'jobId': jobId,
});
} finally {
_onExtractingHandlerByJobId.remove(jobId);
}
}