adt 0.2.0 copy "adt: ^0.2.0" to clipboard
adt: ^0.2.0 copied to clipboard

outdated

A code generator for algebraic data types such as data classes and discriminated unions.

example/lib/main.dart

import 'data_class.dart';

void main() {
  const dc1 = DataClass(field1: 7);
  final dc2 = dc1.copyWith(field1: 1);
  final dc3 = dc1.copyWith(field1: 1, field2: null);
  print(dc1.hashCode); // 1286781335
  print(dc2.hashCode); // 119482181
  print(dc3.hashCode); // 119482181
  print(dc1 == dc2); // false
  print(dc1 == dc3); // false
  print(dc2 == dc2); // true
  print(dc1); // DataClass(field1: 7, field2: default value)
  print(dc2); // DataClass(field1: 1, field2: default value)
  print(dc3); // DataClass(field1: 1, field2: default value)

  const dcwnf1 = DataClassWithNullableField(field1: 7);
  final dcwnf2 = dcwnf1.copyWith(field1: 1);
  final dcwnf3 = dcwnf1.copyWith(field1: 1, field2: null);
  print(dcwnf1); // DataClassWithNullableField(field1: 7, field2: default value)
  print(dcwnf2); // DataClassWithNullableField(field1: 1, field2: default value)
  print(dcwnf3); // DataClassWithNullableField(field1: 1, field2: null)

  const gdc1 = GenericDataClass(7, {7});
  const gdc2 = GenericDataClass('A', ['A']);
  print(gdc1); // GenericDataClass<int, Set<int>>(field1: 7, field2: {7})
  print(gdc2); // GenericDataClass<String, List<String>>(field1: A, field2: [A])

  // const pdc1 = _PrivateDataClass(7);
  // final pdc2 = pdc1._copyWith(field1: 1);

  // const dcwpc1 = DataClassWithPrivateConstructor._(7);
  // final dcwpc2 = dcwpc1._copyWith(field1: 1);
  final dcwpc3 = DataClassWithPrivateConstructor.create(7, 'A');
  print(dcwpc3.key); // DataClassWithPrivateConstructor(field1: 7, field2: A)
  print(dcwpc3.value); // 2020-07-04 21:06:46.902073

  final mdc1 = MutableDataClass(field1: 7);
  print(mdc1); // MutableDataClass(field1: 7, field2: null)
  mdc1.field2 = 'value';
  print(mdc1); // MutableDataClass(field1: 7, field2: value)

  final mcdc1 = MultipleConstructorDataClass(7);
  print(mcdc1); // MultipleConstructorDataClass(field1: 7)
  print(mcdc1.showCreationDate()); // year: 2020, month: 7 day: 4
}
7
likes
0
pub points
0%
popularity

Publisher

unverified uploader

A code generator for algebraic data types such as data classes and discriminated unions.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

adt_annotation, analyzer, build, code_builder, dart_style, meta, source_gen

More

Packages that depend on adt