이번 포스팅에선 사실상 이번 프로젝트의 핵심인 viewModel에 대해서 설명하겠다.
코드는 크게 3부분으로 나누어져있다.
1. API 통신
2. Sqlite
3. riverpod

크게 특별할 것 없이 통신에는 DIO 페키지를 사용하였고 riverpod 클래스 안에서 선언할까 했었는데 따로 클래스를 분리하여 작성하였다.

SQLite 또한 별도의 클래스에 작성하였다.
간략하게 구성을 설명하면
1. 선언부분
2. db 파일 불러오기 (없을 시 자동 생성)
3. 검색기록 추가 및 갱신
4. 검색 목록 가져오기, 삭제
특별할 것 없지만 내가 신경쓴 부분이 1가지 있는데 위의 캡쳐 부분이다.
출퇴근 시 사용 할 것이므로, 현재 시간과 비교할 때 날짜를 제외하고 오로지 시간만 비교하도록 하였다.
큰 부분은 아니지만 나름 신경써봤다 ㅋㅋ;
riverpod 코드는 위에서 설명한 클래스들의 기능 활용과 타이머, 선택한 열차 강조 함수로 구성되어 있다.

내가 강조하고 싶은건 타이머 코드이다. Timer.peridoic을 이용해서 일정 시간마다 UI를 그릴 수 있도록 하였다.
이때 내가 어려웟던 부분이 화면을 갱신해줘야하는데 Setstate를 사용하지 않고 어떻게 하냐는 부분이였다.
타이머에 관련한 데이터는 riverpod의 state 부분의 데이터가 아니라서 감이 안왔다;;;;;
ConsumerStatefulWidget을 view에서 사용했기 때문에 view쪽으로 타이머 코드를 옮기는 방법도 있었지만
비즈니스 코드는 최대한 view쪽에서 배제하고 싶었다;;;
그렇게 찾아보던중 그냥 state에 이전 데이터를 그대로 다시 넣어주면 view쪽이 갱신된다는 걸 알았다;;;
조금은 간단하고 허무하게 해결되버렸다;;
이상으로 해당 프로젝트의 매우 간단하지만 난잡한 설명을 마치도록하겠다.
처음에는 이전 프로젝트가 판은 커지고 게임의 시즌도 바뀌고 개인적인 일도 있고해서 미루다가
내가 하고싶은 간단한 프로젝트 하나하나 해보자하는 마음에서 시작해버렸다 ㅋㅋ;;;;
사실 포스팅도 조금 더 어려운 알람, 실시간 도착 정도를 표현하는 UI 등을 추가할까 했는데 쓸모도 크게없고
제공하는 다른 API를 사용하더라도 고생에 비해 크게 만족도가 높을 것 같지않아 하지않았다.
하지만 이번 포스팅을 하면서 버그를 몇개 찾아낸게 있어서 해당 부분 수정하면서
느긋하게 추가 기능도 한번 생각해봐야겠다.
추가로 해당 git에 올려놓았으니 참고하실 분이 혹~~시 계시다면 편하게 쓰셔도 좋습니다
GitHub - beomsuong/metro
Contribute to beomsuong/metro development by creating an account on GitHub.
github.com
'지하철 도착 알림 앱' 카테고리의 다른 글
Flutter) 지하철 도착 알림 앱 (2) (0) | 2024.05.30 |
---|---|
Flutter) 지하철 도착 알림 앱 (1) (0) | 2024.05.29 |