flutter에서 model 클래스 정의하고, fromJson 생성자를 일일이 만들어줘야하는 게 불편했다. 데이터를 가져올 때마다 매번 이래야하니 귀찮아 죽을 것 같았다.
두번째 모델을 만들려다가 flutter에도 왠지 graphql-code-generator 같은 비슷한 라이브러리가 있을 것 같았다.아니나 다를까 3개 정도가 있었는데 그 중 artemis가 document도 잘 정리되어있고 star 수도 많아 쓸만해보였다.
Artemis
아르테미스는 graphql 파일을 찾아 dart 파일을 생성해주는 code generator 기능이 있고 ArtemisClient로 graphql 쿼리도 날릴 수 있다. artemis는 아폴론(apollo)의 쌍둥이 여동생인데 graphql Apollo와 비슷하다고 하여 artemis로 지었다고 한다.
flutter에서 모델 클래스를 만들 때 아래 같은 코드가 자주 사용된다. 그런데 factory라는 것을 dart에서 처음 봤다. factory 키워드는 무엇이고 어떤 역할을 할까?
[Dart] what is factory?
singleton pattern class
dart
image source: flutter.ko-dev
부모 위젯의 state를 참조, 변경하는 법
자기 자신의 state를 업데이트하려면 setState를 쓰면 된다. 하지만 자식이 부모 위젯의 state를 참조 또는 변경하려면 어떻게 해야할까?
[Flutter] 자식 위젯에서 부모 위젯 state 참조하기: findAncestorStateOfType
How to Update State of Parent Widget?
flutter
tip
state 변경되어도 rerendering 하지 않는 방법
아래 그림은 StatefulWidget의 생명주기(life cycle)이다. build 메서드는 StatefulWidget에서 화면 상에 보여줄 위젯을 그린다. build 메서드는 initState를 실행하거나, 부모 위젯에 의해 config가 업데이트 되었거나, setState로 인해 state가 변경되었을 때 실행된다.