[Flutter]Freezed

한상욱·2023년 11월 4일
0

Flutter

목록 보기
2/26
post-thumbnail

들어가며

우리는 앱에서 CRUD를 위해서 반드시 Model을 작성하게 됩니다. 기본적으로 Model은 프로퍼티와 toJson, fromJson과 같은 메소드들을 함께 포함하며 작성하게 됩니다만, Model은 필요할때마다 계속 만들어내야합니다. 게다가, 프로퍼티가 변경될 경우 FromJson도 수정해야하는 변경사항들이 나타나겠죠. 이럴때 Freezed 패키지를 사용해서 Model을 생성하면 생산성과 유지보수성을 높일 수 있을 것입니다.

Freezed 세팅

Freezed는 Code Generator입니다. 그리고 당연히 toJson, fromJson같은 메소드도 함께 사용할겁니다. 그래서 아래와 같이 dependencies를 추가해줍니다.

dependencies:
  flutter:
	...
  freezed_annotation: ^2.4.1 # 추가

dev_dependencies:
  flutter_test:
    sdk: flutter
    ...
  freezed: ^2.4.5 # 추가
  build_runner: ^2.4.6 # 추가
  json_serializable: ^6.7.1 # 추가

이제 Freezed를 사용할 준비가 완료되었습니다.

Model 생성

저는 Todo 라는 모델을 작성할겁니다. 일반적인 class와 다르게 아래처럼 작성해줍니다.

import 'package:freezed_annotation/freezed_annotation.dart';

part 'todo.freezed.dart';
part 'todo.g.dart';


class Todo with _$Todo {
  factory Todo({
    required int id,
    required String name,
  }) = _Todo;

  factory Todo.fromJson(Map<String, dynamic> json) => _$TodoFromJson(json);
}

이렇게 작성하면 빨간줄이 잔뜩 나타나지만, 괜찮습니다. build_runner를 실행하게 되면 에러가 모두 사라집니다.

이제, 아래와 같은 명령어를 실행해줍니다.

# dart run build_runner build

이렇게 되면 에러는 모두 사라지고, 새로운 2개의 파일이 생성됩니다. 그리고 다른 Model처럼 toJson, fromJson까지 사용되는 Model이 되는 것이죠.

profile
자기주도적, 지속 성장하는 모바일앱 개발자가 되기 위해

0개의 댓글