플러터에서 freezed 패키지 사용하기: 심층 가이드

2024. 7. 2. 11:56Flutter/Flutter Programming

반응형

플러터에서 Freezed 패키지란?

Freezed는 플러터(Flutter)에서 불변(immutable) 모델 클래스를 손쉽게 생성할 수 있도록 도와주는 패키지입니다. 이 패키지를 사용하면 코드를 간결하게 유지하면서도 데이터 모델을 정의하고, 이를 불변성을 유지하며 사용할 수 있습니다.

Freezed 패키지 설치하기

우선, Freezed 패키지를 설치하는 방법부터 알아봅시다. pubspec.yaml 파일의 dependencies 섹션에 다음과 같이 추가합니다

dependencies:
  freezed_annotation: ^0.15.0
  json_annotation: ^4.0.0
  build_runner: ^2.1.2
  freezed: ^0.16.0

그리고 터미널에서 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

Freezed 패키지 사용하기

1. 모델 클래스 정의하기

먼저, Freezed를 사용하여 불변 모델 클래스를 정의해봅시다. 예를 들어, 사용자 정보를 담은 모델 클래스를 만들어보겠습니다.

import 'package:freezed_annotation/freezed_annotation.dart';

part 'user_model.freezed.dart';

@freezed
abstract class UserModel with _$UserModel {
  factory UserModel({
    required String id,
    required String name,
    required int age,
  }) = _UserModel;
}

2. 코드 생성하기

위의 코드에서 @freezed 어노테이션은 Freezed의 주요 어노테이션입니다. part 'user_model.freezed.dart'; 는 코드 생성기에 의해 생성될 코드가 포함된 파일임을 나타냅니다. 이 파일은 직접 수정하지 않아야 합니다.

3. 코드 생성 실행하기

터미널에서 다음 명령어를 실행하여 코드를 생성합니다

flutter pub run build_runner build

이 명령어는 @freezed 어노테이션이 붙은 클래스에 대해 필요한 코드를 생성합니다.

4. 사용하기

이제 생성된 UserModel 클래스를 사용할 수 있습니다. 예를 들어,

void main() {
  final user = UserModel(id: '1', name: 'Alice', age: 30);
  print(user.name); // 출력: Alice
}

위와 같이 간단히 객체를 생성하고 사용할 수 있습니다.

Freezed 패키지 옵션

Freezed 패키지는 여러 옵션을 제공하여 클래스를 정의할 때 유연성을 더해줍니다. 몇 가지 주요 옵션을 소개합니다:

  • @Default 어노테이션: 기본값을 지정할 수 있습니다.
  • @JsonSerializable 어노테이션: JSON 직렬화/역직렬화를 자동으로 처리할 수 있습니다.
  • @late 어노테이션: 지연 초기화 필드를 정의할 수 있습니다.
  • @required 어노테이션: 필수 매개변수를 지정할 수 있습니다.

더 많은 옵션과 상세한 사용법은 Freezed 패키지의 공식 문서를 참고하시기 바랍니다.

마무리

이상으로 Freezed 패키지의 기본적인 사용법과 옵션에 대해 간략히 소개해보았습니다. Freezed를 사용하면 플러터 애플리케이션에서 더욱 효율적이고 안전한 데이터 모델을 구성할 수 있습니다. 추가적인 정보가 필요하시면 공식 문서를 참고하시면 도움이 될 것입니다.

 

 

 

수발가족을 위한 일기장 “나비일기장

 

https://play.google.com/store/apps/details?id=com.maccrey.navi_diary_release

 

구글플레이 앱 배포의 시작! 비공개테스트 20명의 테스터모집을 위한 앱 "테스터 쉐어"

 

https://play.google.com/store/apps/details?id=com.maccrey.tester_share_release

 

카카오톡 오픈 채팅방

https://open.kakao.com/o/gsS8Jbzg

반응형