zstandard_linux
The Linux 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 Linux implementation is selected automatically on Linux:
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
- ZstandardLinux() — Creates the Linux 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 to load libzstandard_linux_plugin.so; CMake builds
it with the Flutter application. Public work runs in a worker isolate using
Dart-owned bytes, and decompression enforces the configured output limit as it
streams.
Testing
From the package directory:
flutter test
Unit tests run only on Linux (skipped on other platforms). For integration tests, run the main zstandard example app on Linux.
Troubleshooting
- libzstandard_linux_plugin.so not found: Build your app with
flutter build linuxor run from the Flutter Linux runner so the native library is built and available. - Crashes: Verify inputs and that you are on a supported architecture (x64 or arm64).
See the documentation for more.
