freezed 2.0.0
freezed: ^2.0.0 copied to clipboard
Code generation for immutable classes that has a simple syntax/API without compromising on the features.
2.0.0 #
-
Breaking: freezed_annotation no-longer exports the entire package:collection
-
Breaking: Freezed no-longer generates
$MyClassTearOff. This feature is now available in Dart -
Breaking Removed
@Freezed(maybeMap: )&@Freezed(maybeWhen: )in favor of a separate:@Freezed(map: FreezedMap(...), when: FreezedWhenOptions(...)) -
Breaking: Freezed now converts Lists/Maps/Sets into UnmodifiableListView/UnmodifiableMapView/UnmodifiableSetView. This can be disabled for one class by specifying
@Feezed(makeCollectionsUnmodifiable: false). Alternatively, this can be configured inside thebuild.yamlfile -
Added parameters of
@Freezedto customize the generated code. This includes: fromJson, toJson, map, when, equal, toStringOverride, copyWith.These parameters allow disabling code that would otherwise be generated. It also allows forcing the generation even if it would otherwise not be generated.
-
Feat: Add screaming snake union case type (#617) (thanks to @zbarbuto)
-
Fix null exceptions in some cases when using typedefs (thanks to @smiLLe)
-
Support analyzer 4.0.0
-
Fix an issue with generic Freezed classes failing to compile when using
@With<Mixin<T>>()#614 -
Added
@unfreezedas a variant to@freezed, for mutable classes
1.1.1 #
- Lints are now disabled inside generated files (requires Dart 2.15)
- Upgraded the analyzer version to 3.0.0
1.1.0 #
Added support for disabling the generation of maybeMap/maybeWhen (thanks to @Lyokone)
1.0.2+1 #
Updated the README
1.0.2 #
Fixed a regression with the ==/hashCode implementation generated for
classes with custom implementations of List/Map/... (see https://github.com/rrousselGit/freezed/issues/561)
1.0.1 #
Fixed an issue where some build.yaml options were not properly considered.
This includes changing where the generated files should be placed. (Thanks to @sperochon)
1.0.0 #
Freezed is now stable
This release also:
- reverted an involuntary change of how union types were de/serialized, breaking existing code.
- fixed an issue with generic typedefs (thanks to @SunlightBro #552)
- fixed a potential null exception
0.15.1+1 #
- Fixed a bug where the generated code for serializable unions with a base class was invalid
0.15.1 #
- The union key is no longer passed
json_serializablewhen deserializing avoid the case of being anunrecognized_keyin some cases. - Updated dependencies
- Increased minimum Dart SDK required to 2.14.0
- Fixed an issue where classes with a $ in their name could cause Freezed to fail (Thanks to @comigor #542)
- When using typedefs, the generated code now tries to use the typedef too if possible, instead of the aliased type (Thanks to @Norbert515 #536).
- Added support for custom ==/hashCode implementation (Thanks to @casvanluijtelaa #526)
- When writing a custom
toJsonfunction, it will now always take precedence over the default implementation generated by Freezed.
0.15.0+1 #
Fixed the generated hashCode not compiling for objects with a large number
of properties. (#531)
0.15.0 #
-
Breaking Changed the syntax for
@Withand@Implementsto use a generic annotation. Before:@With(MyClass) @With.fromString('Generic<int>')After:
@With<MyClass>() @With<Generic<int>>() -
Fixed an issue with fromJson tear-offs not allowing
Object?as map value. (#520) -
Optimized the generated implementation of
hashCodeand== -
Fixed an issue when
MyClass<Object>()andMyClass<int>()could be considered equal -
Require Dart SDK >=2.14.0.
0.14.5 #
- fixed a bug when using alias imports, potentially using the prefix on every variables.
- When
@Freezed(fallback: '...')is specified and usingfromJson, now support cases where the JSON does not contain the "key".
0.14.4 #
- Now supports types coming from
import '...' as alias; - generated .freezed.dart are now excluded from code coverage reports.
- if
toStringis overriden, Freezed no-longer appliesDiagnosticablewhich would break thetoString(fixes #221) - Add
union.whenOrNullandunion.mapOrNull, similar tomaybeWhenandmaybeMapbut instead of anorElsethey returnnull.
0.14.3 #
- Upgraded to support json_serializable 5.0.0
fromJsonnow throwsCheckedFromJsonExceptionif it fails to deserialize an object.- fixed an issue where optional dynamic keys were not allowed.
0.14.2 #
- Added the ability to specify a fallback constructor when deserializing unions (thanks to @Brazol)
0.14.1+3 #
Upgrade dependencies
0.14.1+2 #
Fixed examples in the README
0.14.1+1 #
- Fixed issues with recursive Freezed classes that could cause the parameter type to be inferred as
dynamic(see #399) - Updated
buildand other similar dependencies to latest
0.14.1 #
-
Added the ability to customise the JSON value of a union. See https://github.com/rrousselGit/freezed#fromjson---classes-with-multiple-constructors for more information (Thanks to @ookami-kb)
-
Fix an issue where Freezed would not generate code properly if
freezed_annotationwas indirectly imported (by importing a library that exportsfreezed_annotation) (Thanks to @ookami-kb)
0.14.0+2 #
- Fix
@Assertno-longer working - Fixed an issue where a
factoryusing the=>syntax (so not managed by Freezed) with default values could break code-generation.
0.14.0+1 #
- fix
sort_unnamed_constructors_firstandcast_nullable_to_non_nullablein the generated code (Thanks to @gaetschwartz #372)
0.14.0 #
-
Stable null-safety release
-
Upgraded
analyzerto support latest versions -
Freezed classes no-longer need to be abstract.
Before:@freezed abstract class Example with _$Example { factory Example(int value) = _Example; }after:
@freezed class Example with _$Example { factory Example(int value) = _Example; }This leads to better error messages when a Freezed class uses interfaces/mixins but the class is missing a specific property.
-
It is now allowed to add unimplemented getter to Freezed classes. This can be useful to guarantee that union-types all have a common property:
@freezed class Union with _$Union { const factory Union.left(int value) = _Left; const factory Union.right(int value) = _Left; @override int get value; // adding this forces all union cases to possess a `value` property } -
Excluded getters and late variables from the generated
toStringas they could potentially cause a StackOverflow -
Fixed a bug causing properties with annotations to generate the annotations before the `required keyword, leading to a compilation error (see #351).
0.14.0-nullsafety.1 #
- Upgraded
analyzerto support latest versions
0.14.0-nullsafety.0 #
-
Freezed classes no-longer need to be abstract.
Before:@freezed abstract class Example with _$Example { factory Example(int value) = _Example; }after:
@freezed class Example with _$Example { factory Example(int value) = _Example; }This leads to better error messages when a Freezed class uses interfaces/mixins but the class is missing a specific property.
-
It is now allowed to add unimplemented getter to Freezed classes. This can be useful to guarantee that union-types all have a common property:
@freezed class Union with _$Union { const factory Union.left(int value) = _Left; const factory Union.right(int value) = _Left; @override int get value; // adding this forces all union cases to possess a `value` property }
0.13.0-nullsafety.2 #
- Excluded getters and late variables from the generated
toStringas they could potentially cause a StackOverflow
0.13.0-nullsafety.1 #
- Fixed a bug causing properties with annotations to generate the annotations before the `required keyword, leading to a compilation error (see #351).
0.13.0-nullsafety.0 #
Migrated to null safety
0.12.7 #
- fixed a bug where
///above a constructor could cause the generation to stop working (see also https://github.com/rrousselGit/freezed/issues/326)
0.12.6 #
- Fix Freezed generating code from constructors that do not rely on Freezed (https://github.com/rrousselGit/freezed/issues/323)
0.12.5 #
- Fixes a bug where comments on named parameters could break generation (https://github.com/rrousselGit/freezed/issues/317)
0.12.4 #
- fixed a bug that caused the code-generation to never complete (https://github.com/rrousselGit/freezed/issues/312)
0.12.3 #
- Renamed
Resultin generated code toTResultto avoid naming conflicts - Fixes
InconsistentAnalysisExceptionsometimes being thrown (https://github.com/rrousselGit/freezed/issues/294)
0.12.3-dev #
- Renamed
Resultin generated code toTResultto avoid naming conflicts - Fixes
InconsistentAnalysisExceptionsometimes being thrown (https://github.com/rrousselGit/freezed/issues/294)
0.12.2 #
- Upgrade the depenencies (analyzer, build_runner)
- fixed a bug where a custom
fromJsonconstructor still generated thefromJsonconstructor with json_serializable (see also https://github.com/rrousselGit/freezed/issues/280) - fixed a generation issue when
unionKeycontains special characters (see also https://github.com/rrousselGit/freezed/issues/274)
0.12.1 #
- Removed dependency on
_fe_analyzer_shared
0.12.0 #
-
Added
/// @nodocon objects generated by Freezed that starts with$to not pollute dartdoc. -
Added support for documenting properties, by documenting the constructor parameters:
@freezed abstract class Example with _$Example { const factory Example( /// Some documentation String parameter, ) = Person; } -
Added
Assertdecorator to generateassert(...)statements on Freezed classes:@freezed abstract class Person with _$Person { @Assert('name.trim().isNotEmpty', 'name cannot be empty') @Assert('age >= 0') factory Person({ String name, int age, }) = _Person; } -
Now generates a constructor tear-off for
fromJsontoo:@freezed abstract class Person with _$Person { factory Person({ String name, int age}) = _Person; factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json); } List<Map<String, dynamic>> list; List<MyClass> persons = list.map($Person.fromJson).toList(); -
Added a way to customize the de/serialization of union types using the
@Freezed(unionKey: 'my-key')decorator.See also https://github.com/rrousselGit/freezed#fromjson---classes-with-multiple-constructors
0.11.6 #
-
Fixed a bug where deep-copy did not work properly for recursive classes (https://github.com/rrousselGit/freezed/issues/213)
-
Fixed a situation where
@lateproperties could trigger aRangeError(https://github.com/rrousselGit/freezed/issues/219)
0.11.5 #
- Fixed a bug in which case Freezed generated an invalid
copyWithimplementation
0.11.4 #
- No-longer generate
when/... for private constructors.
0.11.3 #
- Fixed a bug where the generated class incorrectly used
Diagnosticableevent ifpackage:flutter/foundationwasn't imported. (Thanks to @avbk)
0.11.2 #
- Generate
when/map/... even for classes with a single constructors (thanks @andrzejchm)
0.11.1 #
- Further improve the parsing of recursive freezed class to avoid
dynamics
0.11.0 #
-
Added
@Withand@Implementsdecorators to allow only a specific constructor of a union type to implement an interface:@freezed abstract class Example with _$Example { const factory Example.person(String name, int age) = Person; @Implements(GeographicArea) const factory Example.city(String name, int population) = City; }Thanks to @long1eu
-
Fixed a bug where a recursive freezed class may generate a property as dynamic (thanks to @maks)
-
Improved the readme (Thanks to @scopendo and @Matsue)
0.10.9 #
- Fixes a bug where code-generation could end-up in a Stack Overflow if a class depends on itself
0.10.8 #
- Fix code-generation issue for deep-copy of generic objects (https://github.com/rrousselGit/freezed/issues/128)
0.10.7 #
- Fixes a bug where classes with both getters and consts constructors caused an exception. (https://github.com/rrousselGit/freezed/issues/142)
0.10.6 #
- do not create
@requiredannotation for positional arguments onwhen/mapfunctions (thanks to @hpoul) - Fix == returning false for classes with "other" prop (thanks to @mhmdanas)
0.10.5 #
Fixes classes with getters and a private MyClass._() constructor not properly generating.
0.10.4 #
Fixed Freezed trying to generate code for factory constructors with a complex body.
0.10.3 #
- Fixes Freezed trying to generate code for files that don't use it
0.10.2 #
- Fixes a bug where deep copy did not compile if the class definitions were spread on multiple files.
0.10.1 #
- Fixed a stack-overflow during generation on recursive classes
- Fixed invalid generated code for classes with a concrete constructor + using Diagnosticable
0.10.0 #
- Consider optional parameters with a default value as non-nullable
- Add deep-copy support
- Allow the class to define methods/getters
- Do not override
toStringif the user-defined class already overridestoString
0.9.2 #
Fixes parsing of recursive classes
0.9.1 #
Support enum and static const default values
0.9.0 #
Support class-level decorators (see https://github.com/rrousselGit/freezed/issues/50)
0.8.2 #
Generated file now ignores invalid_override_different_default_values_named
0.8.0 #
Now also generate constructor tear-off.
0.7.3 #
Fixes @Default generating invalid code if the default value explicitly used const.
0.7.2 #
Fix null/bool default value support
0.7.1 #
Fixes a bug where @Default only worked with strings/numbers/functions/types.
0.7.0 #
Add support for default values
0.6.3 #
- Make
freezedignoreuse_function_type_syntax_for_parameterswarnings (see https://github.com/rrousselGit/freezed/issues/57)
0.6.2 #
- Fixes an issue with inconsistent
hashCodewhen using collections - Fixes a parsing bug with complex concrete factory constructors.
0.6.1 #
Fixed a bug where @late could incorrectly parse the getter
0.6.0 #
Add support for cached getters using @late.
0.5.1 #
- Document
@nullable - fix a bug where static members where not allows (thanks @knaeckeKami)
0.5.0 #
The generated == now works with collections too.
If a class created has a List/Map/Set/Iterable, then the == will deeply compare these instead of comparing their reference.
0.4.0 #
Automatically generate assert(property != null) on both constructors and copyWith
methods.
This also adds a @nullable decorator to disable this assertion.
0.3.0 #
Now use a custom @freezed annotation instead of @immutable.
0.2.5 #
Fixed a bug where generic json deserialization didn't apply generic parameters (https://github.com/rrousselGit/freezed/issues/32)
0.2.4 #
Make the generated interface a mixin to fix prefer_mixin lints (https://github.com/rrousselGit/freezed/issues/28)
0.2.3 #
Fixes a bug where constructors with generic parameters caused the parsing of the redirected constructor to fail. (https://github.com/rrousselGit/freezed/issues/25)
0.2.2 #
Fixes a bug where the code would not compile if a property had the same name as a named constructor.
0.2.1 #
Fixes a bug where classes with a single constructor + fromJson did not generate properties/copyWith.
0.2.0 #
Transfer all parameters decorators to the generated properties.
0.1.4 #
- Fixed a bug where
map/maybeMapon generic classes didn't pass the generic parameters.
0.1.3+1 #
- Fix README's index
0.1.3 #
- Don't generate anything for factory constructors with a body. (https://github.com/rrousselGit/freezed/issues/9)
0.1.2 #
-
fromJson/toJsonno longer require/add aruntimeTypekey for classes with a single constructor. (https://github.com/rrousselGit/freezed/issues/7) -
don't generate anything for classes that add
@freezedbut define real properties (https://github.com/rrousselGit/freezed/issues/5)
0.1.1 #
Upgrade min range of analyzer dependency
0.1.0 #
Add support for json_serializable
0.0.2 #
Implicitly generate debugFillProperties if the necessary classes are imported.
0.0.1 #
Add generic support
0.0.0 #
Initial release



