Search packages, repositories and app categories

Package detailsv1.5.6

zstandard

Flutter plugin for fast Zstandard compression and decompression across native and WebAssembly platforms.

AndroidiOSLinuxmacOSWebWindows
30-day downloads
47.5K
Likes
12
Pub points
160

Install package

flutter pub add zstandard

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

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.

Use cases

  • Real-time data streaming
  • Reducing app bundle size
  • Efficient file storage
  • Network data optimization
  • Offline data caching
  • Cross-platform data compression

Key features

  • 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

Suitable for

  • Apps needing fast compression
  • Developers targeting multiple platforms
  • Data-intensive applications
  • Performance-critical environments
  • Web and mobile hybrid apps
  • Applications optimizing bandwidth or storage

Considerations

  • 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

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

pub package
pub package
codecov

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.


Compatibility

Android iOS Web macOS Windows Linux Fuchsia
Flutter :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: (wasm) :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: ❌
Native FFI FFI WebAssembly FFI FFI FFI ❌
Precompiled No No Yes No No No ❌
macOS Windows Linux
x64 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
arm64 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Precompiled Yes Yes Yes

Documentation

Full documentation is in the docs/ directory, including:


Basic Usage

In-App (Flutter)
import 'package:zstandard/zstandard.dart';

void main() async {
  final zstandard = Zstandard();

  Uint8List originalData = Uint8List.fromList([...]);

  Uint8List? compressed = await zstandard.compress(originalData, 3);
  
  final decompressed = compressed == null
      ? null
      : await zstandard.decompress(compressed, maxOutputSize: 64 * 1024 * 1024);
}

Using extensions:

import 'package:zstandard/zstandard.dart';

void main() async {
  Uint8List originalData = Uint8List.fromList([...]);

  Uint8List? compressed = await originalData.compress();
  
  final decompressed = await compressed.decompress(
    maxOutputSize: 64 * 1024 * 1024,
  );
}
Command Line (zstandard_cli)
# 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';

void main() 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';

void main() async {
  final originalData = Uint8List.fromList([...]);

  final compressed = await originalData.compress(compressionLevel: 3);

  final decompressed = await compressed.decompress();
}

Screenshots

Compression and Decompression Samples
macOS

Windows

Linux

Flutter Plugin (Android, iOS, macOS, Web, Windows, Linux)


License

This project uses code from the original facebook/zstd repository. Please see the LICENSE file for more information.

Categories

Dependencies

Source repository

Projects using this package

No data available yet.

Rankings