티스토리 뷰

출처 : https://pub.dev/packages/freezed

 

freezed | Dart Package

Code generation for immutable classes that has a simple syntax/API without compromising on the features.

pub.dev

 

[라이브러리] 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
댓글


최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday