vm_class 2.1.2+3
vm_class: ^2.1.2+3 copied to clipboard
A Dart library for virtual machine objects that provides enhanced toString, equality, and other utilities.
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}');
}