vm_class 2.1.2+3 copy "vm_class: ^2.1.2+3" to clipboard
vm_class: ^2.1.2+3 copied to clipboard

A Dart library for virtual machine objects that provides enhanced toString, equality, and other utilities.

example/vm_class_example.dart

import 'package:vm_class/vm_class.dart';

class Address extends VmClass {
  const Address({
    required this.street,
    required this.city,
  });

  final String street;
  final String city;

  @override
  Map<String, dynamic> get toStringProps => {
        'street': street,
        'city': city,
      };

  @override
  String? get shortQualifier => '$city, $street';
}

class User extends VmClass {
  const User({
    required this.name,
    required this.age,
    required this.address,
    required this.hobbies,
    required this.friends,
  });

  final String name;
  final int age;
  final Address address;
  final List<String> hobbies;
  final List<User> friends;

  @override
  Map<String, dynamic> get toStringProps => {
        'name': name,
        'age': age,
        'address': address,
        'hobbies': hobbies,
        'friends': friends,
      };

  @override
  String? get shortQualifier => '$name, $age';
}

void main() {
  final friend1 = User(
    name: 'Alice Smith',
    age: 28,
    address: Address(street: '456 Elm St', city: 'Smalltown'),
    hobbies: ['Painting', 'Running'],
    friends: [],
  );

  final friend2 = User(
    name: 'Bob Johnson',
    age: 32,
    address: Address(street: '789 Oak St', city: 'Big City'),
    hobbies: ['Cooking', 'Cycling'],
    friends: [],
  );

  final user1 = User(
    name: 'John Doe',
    age: 30,
    address: Address(street: '123 Main St', city: 'Metropolis'),
    hobbies: ['Reading', 'Gaming', 'Hiking'],
    friends: [friend1, friend2],
  );

  final user2 = User(
    name: 'John Doe',
    age: 30,
    address: Address(street: '123 Main St', city: 'Metropolis'),
    hobbies: ['Reading', 'Gaming', 'Hiking'],
    friends: [friend1, friend2],
  );

  print('Full:\n$user1');
  print('\nShort:\n${user1.toStringShort()}');
  print('\nFully short:\n${user2.toStringShort(fully: true)}');

  print('\nEquality Check:');
  print('user1 == user2: ${user1 == user2}');
}
1
likes
160
points
19
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart library for virtual machine objects that provides enhanced toString, equality, and other utilities.

Repository (GitLab)
View/report issues

Topics

#dart-objects #serialization #equatable #mixin #utilities

Documentation

API reference

License

MIT (license)

Dependencies

equatable

More

Packages that depend on vm_class