The zstandard package provides high-performance Zstandard compression and decompression for Flutter applications across multiple platforms, including Android, iOS, Linux, macOS, Web, and Windows. It leverages native implementations and WebAssembly to deliver fast, efficient data compression suitable for real-time or large-scale data processing. The plugin is ideal for scenarios requiring reduced storage or bandwidth usage without sacrificing speed. It integrates seamlessly via Flutter's pub package system and supports both synchronous and asynchronous operations.
適用情境
Real-time data streaming
Reducing app bundle size
Efficient file storage
Network data optimization
Offline data caching
Cross-platform data compression
主要特色
Zstandard compression with high speed
Support for native and WebAssembly platforms
Cross-platform compatibility
Lightweight and fast
Easy integration via pub
Asynchronous and synchronous APIs
適合對象
Apps needing fast compression
Developers targeting multiple platforms
Data-intensive applications
Performance-critical environments
Web and mobile hybrid apps
Applications optimizing bandwidth or storage
使用建議
Requires platform-specific setup for some environments
May increase app size due to native binaries
Limited to Zstandard algorithm
Potential learning curve for advanced features
Dependent on WebAssembly support on Web
Not suitable for non-compression use cases
原始 README
以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。
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();
}