티스토리 뷰
출처 : https://pub.dev/packages/freezed
[라이브러리] Freezed
Flutter 의 모델을 편하게 만들어주는 라이브러리.
(모델을 생성하고 반복적으로 작업해야하는 작업들이 한번에 처리되는 편의 기능 제공 )
# 설치
flutter pub add freezed_annotation
flutter pub add --dev build_runner
flutter pub add --dev freezed
# json_annotaion 까지 사용할 경우
flutter pub add json_annotation
flutter pub add --dev json_serializable
Person 모델만들기 (필수 항목만 있는 경우)
// 파일명 "person.dart" 으로 생성했을 경우 예제
import 'package:freezed_annotation/freezed_annotation.dart';
// 필수로 `파일명.freezed.dart` 를 넣어준다. (처음에는 해당 파일이 없어 경고 뜨는데 정상)
part 'person.freezed.dart';
// 선택사항 json_serializable을 사용할 경우 `파일명.g.dart`를 넣어준다 (처음엔 경고 뜨는거 정상)
part 'person.g.dart';
// 모델 생성
@freezed
class Person with _$Person {
factory Person({
required String firstName,
required String lastName,
required int age,
}) = _Person;
// json_serializable 사용할 경우 아래와 같은 규칙으로 입력
// factory 클래스명.fromJson(Map<String, dynamic> json) => _$클래스명FromJson(json);
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
}
Todo 모델 만들기 (선택적 요소가 있는 경우)
// 파일명 "todo.dart" 으로 생성했을 경우 예제
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:flutter/foundation.dart';
// 필수로 `파일명.freezed.dart` 를 넣어준다. (처음에는 해당 파일이 없어 경고 뜨는데 정상)
part 'todo.freezed.dart';
// 선택사항 json_serializable을 사용할 경우 `파일명.g.dart`를 넣어준다 (처음엔 경고 뜨는거 정상)
part 'todo.g.dart';
enum Status { done, ready }
// 모델 생성
@freezed
class Todo with _$Todo {
factory Todo({
required String title,
String? context,
required Status status,
}) = _Person;
// json_serializable 사용할 경우 아래와 같은 규칙으로 입력
// factory 클래스명.fromJson(Map<String, dynamic> json) => _$클래스명FromJson(json);
factory Todo.fromJson(Map<String, dynamic> json) => _$TodoFromJson(json);
}
빌드하기
위와 같이 상황에 맞게 모델을 만들고 아래의 빌드 명령을 command 로 날리면,
비어있던 파일이 생성되면서 에러는 사라지고 freezed 기능을 쓸수 있게 된다.
# 빌드 명령
flutter pub run build_runner build
'개발 > Dart & Flutter' 카테고리의 다른 글
freezed.dart, g.dart 파일 하나로 합치기 (0) | 2023.04.22 |
---|---|
[flutter] 안드로이드 빌드시 해두면 좋은 설정들 (0) | 2023.02.28 |
Flutter 추천 라이브러리 (0) | 2023.02.17 |
[라이브러리] Drift (0) | 2023.02.03 |
Dart 문법 정리 (0) | 2018.12.26 |
댓글