본문 바로가기

✏️/Flutter

[flutter] freezed ,,! 앞으로 친해지자!!!

728x90

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는 code generator로 unions, pattern-matching, copy 기능을 제공해준다고 하네요!

실제로 pub 사이트의 index에 가보면 다양한 기능을 제공하고 있고, 계속 업데이트 되고 있네요..!
pub.dev/packages/freezed#index

기존에 code generation으로, json serializable 요 친구를 많이 썼었는데, Freezed가 좀 더 강력?한 느낌이 들고 앞으로 자주 사용할 듯 싶습니다.

freezed의 대한 설명은 코드팩토리님의 블로그에 잘! 정리 되어 있으니, 한번 확인하면 될 듯합니다.
blog.codefactory.ai/flutter/freezed/

--

기본적인 사용은, 다음과 같습니다.

@freezed
class Person with _$Person {
  factory Person({ String? name, int? age }) = _Person;
}

간단하게 팩토리 생성자로 프로퍼티 값을 선언하면, 사용이 가능하다!

var person = Person(name: 'Remi', age: 24);
print(person.name); // Remi
print(person.age); // 24

 

뿐만 아니라, toString, Equatable, copyWith까지 한꺼번에 제공해준다고 하니 꼭 문서 읽어보는 걸 추천한다!

--

서버로부터 serialization 해서 가져온 데이터 값들을 프로젝트에서 사용하다보면 property를 바꿔야하는 경우가 있는데,
copy가 간단하게 코드 몇줄로 제공되니 앞으로 freezed + json serializable로 해서 간결하게 사용 하면 될 듯하다!!

하지만, Union 기능은 강력한 건 알겠는데,, 현재 프로젝트에 도입하기엔 조금 힘들듯하다.

dio freezed 할 때 사용하면 괜찮을지도..?