vm_class_gen 3.5.0+11
vm_class_gen: ^3.5.0+11 copied to clipboard
Generator for `VmClass`.
import 'package:vm_class/vm_class.dart';
import 'package:vm_class_annotation/vm_class_annotation.dart';
part 'example.g.dart';
@VmClassGen()
class Address extends VmClass {
const Address({
required this.street,
required this.city,
});
final String street;
final String city;
@override
String? get shortQualifier => '$city, $street';
@override
Map<String, dynamic> get toStringProps => _$AddressStringProps(this);
}
@VmClassGen()
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
String? get shortQualifier => '$name, $age';
@override
Map<String, dynamic> get toStringProps => _$UserStringProps(this);
}
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}');
}