zstandard_ios 1.5.4
zstandard_ios: ^1.5.4 copied to clipboard
iOS implementation of the Zstandard compression plugin for Flutter applications.
zstandard_ios #
The iOS implementation of the zstandard Flutter plugin. Uses FFI and the native Zstandard C library.
Installation #
Add the main plugin to your app; this package is included automatically via the federated plugin:
dependencies:
zstandard: ^1.5.0
No extra setup is required for normal use.
Usage #
Use the main zstandard API; the iOS implementation is selected automatically on iOS:
import 'package:zstandard/zstandard.dart';
void main() async {
final zstandard = Zstandard();
final data = Uint8List.fromList([1, 2, 3, 4, 5]);
final compressed = await zstandard.compress(data, 3);
final decompressed = await zstandard.decompress(compressed ?? Uint8List(0));
}
Or use the extension methods:
final compressed = await data.compress(compressionLevel: 3);
final decompressed = await compressed?.decompress();
API #
- ZstandardIOS() — Creates the iOS platform implementation.
- compress(Uint8List data, int compressionLevel) — Compresses
data(level 1–22). Returns compressed bytes ornull. - decompressWithOptions(Uint8List data, {int maxOutputSize}) — Decompresses complete, concatenated, or unknown-size zstd frames with a bounded output (256 MiB by default). Invalid, truncated, or oversized input returns
null. - getPlatformVersion() — Returns a platform identifier string.
Architecture #
This package uses Dart FFI with the native zstd C library. Swift Package
Manager statically links the shared target into the app; CocoaPods remains
supported and embeds the plugin framework. Both paths compile the same
common/compress/decompress source set from zstandard_native. Public work runs
in an isolate using Dart-owned bytes and bounded streaming decompression.
Testing #
From the package directory:
flutter test
Unit tests run only on iOS (skipped on other platforms). For integration tests, run the main zstandard example app on an iOS device or simulator.
Troubleshooting #
- Symbol or framework not found: Ensure the iOS target is built (e.g.
flutter run -d ios) and that you are targeting a supported architecture (arm64 device, x86_64/arm64 simulator). SwiftPM loads the statically linked symbols from the process; CocoaPods loads the embedded framework. - Swift Package Manager: Flutter 3.44 and newer enables this path by default.
- CocoaPods: For older Flutter projects or explicit compatibility testing, run
flutter config --no-enable-swift-package-managerand thenpod installin your app’sios/directory if needed.
See the documentation for more.
