라이브러리 추가
- 생각보다 추가할 게 많다.
json을 가공하는 라이브러리나 코드 생성기를 함께 사용하기 때문이다.
$ flutter pub add freezed_annotation
$ flutter pub add json_serializable
$ flutter pub add --dev build_runner
$ flutter pub add --dev freezed
Model 클래스 생성
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user_model.freezed.dart';
part 'user_model.g.dart';
@freezed
class UserModel with _$UserModel {
const factory UserModel({
required String? uid,
required String? phone,
required String? email,
required String? name,
required DateTime? birthDate,
}) = _UserModel;
factory UserModel.fromJson(Map<String, Object?> json) =>
_$UserModelFromJson(json);
}
상태 관리 클래스 생성
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user_state.freezed.dart';
@freezed
class UserState with _$UserState {
const factory UserState.initialize() = Initialize;
const factory UserState.signing() = Signing;
const factory UserState.signedComplete() = SignedComplete;
const factory UserState.noUser() = NoUser;
const factory UserState.errorState() = ErrorState;
}
코드 생성기 실행
package:flutter/foundation.dart을 추가하는 것도 고려해보자, 코드를 nicely readable 하게 만들어 줄 것이다.
</aside>