import 'package:json_annotation/json_annotation.dart';
part '$NAME$.g.dart';
@JsonSerializable(explicitToJson: true)
class $CAP_NAME$ {
$END$
$CAP_NAME$();
factory $CAP_NAME$.fromJson(Map<String, dynamic> json) => _$$$CAP_NAME$FromJson(json);
Map<String, dynamic> toJson() => _$$$CAP_NAME$ToJson(this);
}
fromJson, toJson 만 별도로 작성할 때
factory $CAP_NAME$.fromJson(Map<String, dynamic> json) => _$$$CAP_NAME$FromJson(json);
Map<String, dynamic> toJson() => _$$$CAP_NAME$ToJson(this);
import 'package:freezed_annotation/freezed_annotation.dart';
part '$NAME$.freezed.dart';
part '$NAME$.g.dart';
@freezed
abstract class $CAP_NAME$ with _$$$CAP_NAME$ {
const factory $CAP_NAME$({
$END$
}) = _$CAP_NAME$;
factory $CAP_NAME$.fromJson(Map<String, Object?> json) => _$$$CAP_NAME$FromJson(json);
}
Dart 3.0 이후 (Freezed)
import 'package:freezed_annotation/freezed_annotation.dart';
part '$NAME$.freezed.dart';
@freezed
sealed class $CAP_NAME$<T> with _$$$CAP_NAME$<T> {
const factory $CAP_NAME$.success(T data) = Success;
const factory $CAP_NAME$.error(String e) = Error;
}
Dart 3 이후의 sealed class 와 함께 사용
switch ($condition$) {
case Success(:final data):
$cursor1$
case Error(:final e):
$cursor2$
}