Package selection guidance compiled from public package information, community data, and project usage.
A shared platform interface for the zstandard compression plugin, enabling consistent cross-platform integration of Zstandard compression and decompression across Android, iOS, Linux, macOS, Web, and Windows. This package abstracts platform-specific implementations, allowing developers to write unified code that works seamlessly on all supported platforms. It serves as a foundation for other zstandard-related packages, promoting maintainability and reducing duplication. The interface is designed to be extended by platform-specific implementations, ensuring compatibility and performance while keeping the API stable.
Use cases
Cross-platform compression utilities
Unified data compression in multi-platform apps
Integration with zstandard-based file handling
Supporting efficient data storage and transmission
Building plugins that rely on Zstandard compression
Key features
Shared platform interface
Multi-platform support (Android, iOS, Linux, macOS, Web, Windows)
Extensible design for platform-specific implementations
Stable and consistent API
Facilitates plugin development for Zstandard
Suitable for
Developers building cross-platform compression tools
Plugin authors needing a standardized zstandard interface
Apps requiring efficient, platform-agnostic data compression
Teams maintaining multiple platform builds with shared logic
Considerations
Requires implementation by platform-specific packages
Not usable standalone without platform extensions
Dependent on correct setup of underlying zstandard libraries
May require additional configuration for Web or Windows environments
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Zstandard
Zstandard (zstd) is a fast, high-compression algorithm developed by Meta (formerly Facebook) designed for real-time compression scenarios. It offers a flexible range of compression levels, allowing both high-speed and high-ratio compression, making it ideal for applications with diverse performance needs. Zstandard is widely used in data storage, transmission, and backup solutions.
This repository contains a federated Flutter plugin and a CLI package for zstandard compression, enabling both in-app and command-line usage. The two main components are:
zstandard: A Flutter plugin for cross-platform compression, supporting mobile, desktop, and web platforms. This package integrates the zstd library through FFI for native platforms and WebAssembly for the web, allowing efficient data compression in any Flutter environment.
zstandard_cli: A pure Dart package providing CLI capabilities for macOS, Windows, and Linux. It enables command-line compression and decompression for data files and streams.
Native platform packages and the CLI share the zstd C source and FFI bindings via the zstandard_native package (zstandard_native/src/zstd/). zstandard_native is published to pub.dev as part of this repo’s release set, so a single copy is used whether you depend on the plugin from the repo or from pub.dev.
# Compress a file with a specified compression level
dart run zstandard_cli:compress --level 3 myfile.txt
# Decompress a file
dart run zstandard_cli:decompress myfile.txt.zstd
Dart Code Example (CLI)
import'package:zstandard_cli/zstandard_cli.dart';
voidmain() async {
var cli = ZstandardCLI();
final originalData = Uint8List.fromList([...]);
final compressed = await cli.compress(originalData, compressionLevel: 3);
final decompressed = await cli.decompress(compressed ?? Uint8List(0));
}
Using extensions in Dart:
import'package:zstandard_cli/zstandard_cli.dart';
voidmain() async {
final originalData = Uint8List.fromList([...]);
final compressed = await originalData.compress(compressionLevel: 3);
final decompressed = await compressed.decompress();
}