vm_class_gen 3.5.0+11 copy "vm_class_gen: ^3.5.0+11" to clipboard
vm_class_gen: ^3.5.0+11 copied to clipboard

Generator for `VmClass`.

example/example.dart

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}');
}