pro_binary 3.1.0 copy "pro_binary: ^3.1.0" to clipboard
pro_binary: ^3.1.0 copied to clipboard

Efficient binary serialization library for Dart. Encodes and decodes various data types.

example/main.dart

// Example demonstrating best practices for using `pro_binary` in a Dart
// ignore_for_file: avoid_print
import 'package:pro_binary/pro_binary.dart';

/// A simple domain model to demonstrate serialization best practices.
class User {
  User({
    required this.id,
    required this.name,
    required this.isActive,
    required this.score,
  });

  /// Recommended pattern: Factory for deserialization.
  factory User.decode(BinaryReader r) => User(
    id: r.readVarUint(),
    name: r.readVarString(),
    isActive: r.readBool(),
    score: r.readFloat64(),
  );

  final int id;
  final String name;
  final bool isActive;
  final double score;

  /// Recommended pattern: Static method for serialization.
  void encode(BinaryWriter w) {
    w
      ..writeVarUint(id)
      ..writeVarString(name)
      ..writeBool(isActive)
      ..writeFloat64(score);
  }

  @override
  String toString() =>
      'User(id: $id, name: "$name", active: $isActive, score: $score)';
}

void main() {
  // 1. Using the high-level Pool API (Best for performance)
  print('Step 1: Serializing via Pool...');
  final bytes = BinaryWriterPool.withWriter((writer) {
    User(id: 101, name: 'Dart 🚀', isActive: true, score: 99.5).encode(writer);
    return writer.toBytes(); // View of the pooled buffer
  });

  print('Serialized length: ${bytes.length} bytes\n');

  // 2. Using the Concise API for reading
  print('Step 2: Deserializing...');
  final reader = BinaryReader(bytes);

  // Concise peek via operator []
  final firstByte = reader[0];
  print('Peek first byte: 0x${firstByte.toRadixString(16).padLeft(2, '0')}');

  final decodedUser = User.decode(reader);
  print('Decoded user: $decodedUser\n');

  // 3. Concise byte operations (Callable syntax)
  print('Step 3: Concise data writing...');
  final writer = BinaryWriter();
  writer([0xAA, 0xBB, 0xCC]); // Shorthand for writeBytes

  final r2 = BinaryReader(writer.takeBytes());
  print('Read back 2 bytes concisely: ${r2(2)}'); // Shorthand for readBytes(2)

  print('\nAll examples completed successfully!');
}
4
likes
0
points
1.86k
downloads

Documentation

Documentation

Publisher

verified publisherpro100.dev

Weekly Downloads

Efficient binary serialization library for Dart. Encodes and decodes various data types.

Repository (GitHub)
View/report issues

Topics

#binary #serialization #deserialization

License

unknown (license)

Dependencies

meta

More

Packages that depend on pro_binary