git 협업을 통한 첫 앱 개발이 마무리 단계에 들어섰다.
총 4개의 Page가 있으며 각각 Page별 기능은 차이가 있다.
riverpod 학습이 시작되면 처음부터 끝까지 혼자 다시 구현해보는 시간을 가질 예정이다.

compose를 공부하며 겪었던 사고가 또 다시 일어났다.
기획 단계에서 컴포넌트, 최스 기능별로 세세하게 생각하지 못 했더니 온갖 시행착오와 생고생을 겼었다.
개발을 시작하기 전에 모든 경우의 수를 생각할 수는 없지만, 다같이 처음 겪는 상황이라 디자인부터 고생이 많았다.
이제 어느정도 익숙해졌으니, 기본 컴포넌트 분리, 최소 구현 기능부터 공부해봐야겠다.
디자이너의 필요성이 정말정말 느껴졌다...
그래도 기본적인 디자인은 할 줄 알면 좋으니까 좋은 경험했고, 앞으로도 할 것이라고 생각해야겠다.
이부분도 역시 디자인 도안을 처음부터 정해놓고 만들지 않아서 생긴 부분이다.
첫 디자인 도안을 바탕으로 테마를 구성했는데, 기능 추가에 따라 이런저런 살이 계속 붙다보니 많이 힘들었다.
내일 마지막으로 팀 발표 자료 만들기 전에 수정할 시간이 있는데 마무리 작업에 들어가야겠다.
이제 Compose와는 다른 Row, Column 개념도 어느정도 숙지 되었고, 반응형 구성을 위해 Constrains, Expanded의 활용도 익숙해지고 있는 듯 하다.
앞으로 잡아야 할 점은 Conatiner와 SizedBox의 올바른 사용이다.
무작정 "SizedBox는 공백용! 그러니 웬만해서는 정렬이나 Spacer()를 사용해 위치를 조절해보자!" 생각을 가지고 있었지만, 이번 프로젝트를 통해 잘된 사용은 정말정말 괜찮다는 걸 알게 되었다.
Theme에 대한 궁금증에 생기면서 온갖 자료를 찾아봤다.
앞으로는 더 많이 찾을거지만 지금까지 학습한 내용을 이번 프로젝트에 적용시켜봤다.
혹자는 라이브러리 딸깍하면 모든게 끝난다고 말하지만, 나는 솔직히 그러고 싶지는 않았다.
TextTheme, inputTheme, contentsTheme, dialogTheme 등 직접 내가 원하는 색을 주입하고 용도에 맞게 사용하면서 이해도가 살짝이나마 올랐던 것 같다.
다음에는 AppTheme 전역적으로 컴포넌트를 미리 정의하고, 자주 사용되는 순으로 Theme를 지정후 나머지는 복사해 사용하는 방법을 꼭 적용시켜봐야겠다.
아직 대부분이 Surface, onSurface로 보이지만 개념적인 부분은 사용할수록 익숙해질것으로 생각된다!
ListView에 ListTile을 자주 사용한다는 글을 봤다.
공식문서에서도 ListView를 통해 사용하는 모습이 보이며, 간단하게 Container 느낌의 위젯을 생성할 수 있음을 보여준다.
하지만, ListTile은 주소록 같이 이미지가 없는 부분에서 좋은 모습을 보여줄 수 있을 것 같다.
Leading에 들어가는 Image는 약 56px로 높이가 고정되어 있기에 Image가 주가 되어야 하는 위젯으로 사용하기는 아쉬움이 있다.
이때까지 삼항연산자만 사용하면서 if문으로 Page를 전환할 수 있을 것으로 생각했다.
compose에서는 when절을 사용하기에, flutter에서도 가능한 것으로 착각한 것 같다.
예를 들어, child 속성 안에는 직접적인 if문을 작성하면 빨간펜으로 밑줄을 친절하게 그어준다.
근데 또 신기한건 삼항연산자는 사용할 수 있다.
이 두 부분에 대해 어떤 차이가 있는지는 조금 더 알아볼 필요가 있는 것 같다.
ElevatedButton은 Theme에 적어뒀지만, 사용자 정의로 사용하는 방향이 더 많았다.
Theme에서 정의한 것처럼 styleFrom을 사용해 간단하게 정의할 수 있었다.
확실히 StateFulWidget으로 상태관리를 하려니, 각 상태를 계속해서 내려보내줘야하는 드릴링이 발생한다.
이 방면, 저 방면 다 생각해봐도 피할 수 없는 부분으로 보였다.