1. API 데이터 관리
- ‘JsonSerializable’ 패키지와 , ‘Dio’ 라이브러리를 활용하여 API 데이터 관리를 했습니다.
- ‘JsonSerializable' 패키지를 활용하여, API로부터 받은 날씨 데이터를 저장하고 처리하는 모델 클래스를 설계하였습니다.
- 'fromJson' 메서드와 'toJson' 메서드를 구현하여, API로부터 받은 날씨 JSON 데이터를 클래스 객체로 변환하고, 반대로 클래스 객체를 JSON 데이터로 변환하는 기능을 구현하였습니다.
- 'Dio'라는 HTTP 통신 라이브러리를 사용하여 API를 호출하고, 그 결과로 받은 응답을 모델 클래스의 객체로 변환하는 메서드를 구현하였습니다.
2. 위치 정보 처리
- 'geolocator' 패키지를 사용하여 사용자의 현재 위치를 불러왔습니다.
- 사용자의 현재 위치를 비동기적으로 가져오고, 위치 서비스와 권한 상태를 체크하여 필요한 조치를 취한 후, 위치 정보를 반환하는 기능을 구현하였습니다.
3. 날씨 화면 제작
- 날씨 정보를 클래스 모델에서 처리하는 과정에서, 날씨가 800번대는 다양한 날씨가 있어서 'id' 값이 800번대일 경우 전체 'id' 값을 사용하고 그렇지 않을 경우 'id'의 첫 글자만 사용하여 날씨 id 값을 가져왔습니다.
- 날씨 상태에 따라 사용자에게 다양한 UI를 보여주기 위해 날씨마다 다른 'WeatherListModel' 인스턴스를 'WeatherList' 배열에 저장했습니다.
- API에서 받은 날씨 ID를 기반으로 'WeatherList'에서 해당 ID와 일치하는 'WeatherListModel' 인스턴스를 찾았습니다. 이 인스턴스를 활용하여 날씨에 따라 다른 UI를 사용자에게 제공하도록 구현하였습니다.
4. 로딩 화면 제작
- Animated Builder 위젯을 사용하여 애니메이션을 적용하고, Transform.rotate를 사용하여 이미지가 회전하는 애니메이션을 구현하였습니다.
- 애니메이션의 상태를 관리하기 위해 SingleTickerProviderStateMixin을 이용하여 애니메이션 컨트롤러를 생성하였습니다.