v2.0.0
-
Mappers are now generated for each file containing annotated classes. This removes the
need to specify entry points in thebuild.yaml
.This is now similar to how packages like
json_serializable
orfreezed
generate code.- Generated files are now
part
files and need to be included as such. - All annotated classes must now use their respective
<MyClass>Mappable
mixin. - Instead of one global
Mapper
each class has its own<ClassName>Mapper
.- A new global container that includes all models can now be generated using
@MappableLib(createCombinedContainer: true)
.
- A new global container that includes all models can now be generated using
- Mappers can be linked together to enable working with multiple classes.
- Removed
@CustomMapper
annotation in favor ofincludeCustomMappers
property on@MappableClass()
.
For a detailed migration guide, see this issue.
- Generated files are now
-
Documentation is now separated from the README using the official pub.dev documentation topics.
Find the new documentation here -
Improvements in performance and support for generics and inheritance.
-
Added the [CheckTypesHook] to allow for custom discriminator checks on subclasses in a
polymorphic class structure. -
CopyWith is now more powerful and also works for generic or polymorphic classes, while being
completely type-safe.When called on a superclass, the concrete subtype will be retained through a
.copyWith
call, which also respects generics:// with `class A` and `class B<T> extends A` A a = B<int>(); // static type A, dynamic type B<int> // signature will be `A copyWith()`, so static type A A a2 = a.copyWith(); // this will still resolve to a dynamic type of B<int> assert(a2 is B<int>);