[Flutter] Freezed
목적
기존에 웹사이트에서 하던 모델링을 터미널에서 하려고 합니다.
변경하는 이유는 웹사이트가 널세이프티 지원을 안하고, 모델 파싱하는부분이 제대로 되어있지 않아서 손이 가는 부분이 있었다.
따라서
모델 코드 제너레이션 간편화를 위해 Freezed를 적용전에 문서화 하려고 합니다.
내용
dependency 등록
dependencies:
freezed_annotation: $version
dev_dependencies:
build_runner: $version
freezed: $version
json_serializable: $version
Model 생성
part 'person.freezed.dart';
part 'person.g.dart';
class Person wtih _$Person {
('name.length < 5', '이름의 길이는 5보다 작아야 합니다.')
factory Persion({
required int id,
required String name,
required int age,
}) = _Person;
}
factory Person.fromJson(Map<String, dynamic> json)
=> _$PersonFromJson(json);
// 커스텀 메소드나 게터 세터를 사용하고 싶으면 아래의 생성자를 생성해줘야함
Person._();
get nameLength => this.name.length;
void hello(){
print('Hello');
}
factory Person.loading({int? statusCode}) = _Loading;
factory Person.error(String message, {int? statusCode}) =
_Error;
Code Generation
터미널 창에
flutter pub run build_runner build
기능
코드 제너레이션이 되면
1. toString
2. fromJson
3. toJson
4. Equatable
과 같은 기능을 사용할 수 있다.
5. Validation Check
도 추가로 사용 가능하다
6. Custom getter, setter, function
등도 사용 가능하다.
7. copyWith
8. when 과 같은 부가적인 기능도 많은데 문서 참고합시다.
결론
잘쓰면 좋을것같다.
엄청 많은 기능은 필요를 못느끼고 1~5번 이면 충분할것 같다.
Author And Source
이 문제에 관하여([Flutter] Freezed), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyj5394/Flutter-Freezed저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)