라티의 작은 일기장

패스트캠퍼스 환급챌린지 26일차 미션(2월 26일): 15개 프로젝트로 실무까지 끝내는 Dart & Flutter 앱 개발 강의 후기 본문

Flutter & Dart

패스트캠퍼스 환급챌린지 26일차 미션(2월 26일): 15개 프로젝트로 실무까지 끝내는 Dart & Flutter 앱 개발 강의 후기

코드라티 2024. 2. 26. 23:26

오늘은 토스앱 3시간 만에 만들기 섹션의 마지막 파트를 수강하는 날이다. 얼마 안 남았으니 힘내서 잘 끝내보자!

일반적인 앱의 설정 화면이 으레 그렇듯 토스도 설정 화면의 형태 자체는 스크롤이 가능한 리스트뷰의 형태를 갖는다.

그래서 오늘 배울 중요한 내용들은 화면을 구현하는 방법 보다는 설정값들을 디바이스에 저장하고, 다양한 설정값들을 어떻게 상태관리하는지... 이런 것들이 주를 이룬다.

 

강의를 계속 들어보니까 설정 화면을 그대로 클론하는 것이 아닌, 설정 화면에서 활용할 수 있는 위젯을 구현하는 방법과 그 설정값 상태를 어떻게 관리하는지에 대한 내용이 나온다. 나도 수강생 입장에서 이런 내용들이 더 중요하다고 생각한다. 굿굿

 

간단하게 푸시 알림 설정을 관리하는 메뉴를 만든다고 해보자. 그럼 형태는 아래와 같을 것이다.

여기서 저 Switch가 관리하는 상태, 가령 'isAllowed'는 어디에 선언되어야할까?

Switch 내부에 선언되어야할까? 그럼 편하긴 하겠지만 해당 상태를 Switch 위젯을 포함하고 있는 상위 위젯의 차원에서 알기 힘들다는 단점이 있다.

그럼 위와 같은 경우엔 Container에 선언되는게 적합한 것이다.

그럼 Switch는 Container에서 상태와 해당 상태를 변경할 수 있는 Setter 함수를 내려받아서 활용할 수 있고, 상태 자체는 Container에서 선언되어있으니 Switch가 해당 상태를 변경하면 상위 위젯에서 변경을 감지할 수 있게 된다.

 

추가로 Switch는 OS에 따라 디자인 가이드가 살짝 다른데(Material, Cupertino), 만약 OS에 따라 다른 디자인 가이드에 따른 Switch를 보여주고 싶다면 Switch 영역에 Switch를 감싸는 Wrapping 클래스를 만들고, 아래와 같이 플랫폼에 따라 다른 Switch를 반환해주면 된다.

return Platform.isIOS ? CupertinoSwitch() : Switch()

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/48sS29N