通常のエンティティを作成する
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
@freezed
class User with _$User {
factory User({
required String firstName,
required String lastName,
required int age,
@Default(false) bool isMarried,// If you want to define defaultCalue
}) = _User;
const User._(); // if you want to define some function, you must determine private constructor
bool get fullName => '$firstName $lastName'
}
jsonを扱うエンティティを作成する
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
part 'user.g.dart';
@freezed
class User with _$User {
factory User({
required String firstName,
required String lastName,
required int age,
}) = _User;
factory User.fromJson(Map<String, dynamic> json) =>
_$UserFromJson(json);
}
Unionクラスを作成する
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
@freezed
class Platform with _$Platform {
const factory User.woman() = _Woman;
const factory User.man() = _Man;
const User._();// Prevent constructing from constructor.
String get preName => when(man : () => 'Mr.', woman : () => 'Ms.')
}