728x90
🛠 기술 스택
- Flutter & Dart
- Google Maps API
- OpenWeatherMap API
- Bloc 패턴
- Repository 패턴
📌 주요 기능
- 실시간 위치 추적
- 지도상 위치 선택
- 날씨 정보 표시
- 위치 기반 상품 추천
🔄 데이터 플로우
1. 위치 정보 획득
LocationBloc -(위치 변경)-> LocationRepository
- 실시간 위치 추적
- 구글 맵에서 위치 선택
- 위도/경도 데이터 획득
2. 날씨 데이터 요청
LocationBloc -(위치 데이터)-> WeatherBloc -(API 요청)-> WeatherRepository
- OpenWeatherMap API 호출
- 날씨, 자외선, 대기질 데이터 취합
- 30분 단위 캐싱 처리
3. UI 업데이트
WeatherBloc -(상태 변경)-> 각종 Weather 위젯
- 현재 날씨 표시
- 상세 기상 정보 표시
- 날씨 기반 상품 추천
💡 주요 구현 포인트
1. 위치 서비스
- 위치 권한 관리
- 실시간 위치 업데이트
- 구글 맵 인터랙션
- 위치 캐싱 및 에러 처리
2. 날씨 데이터 관리
- 다중 API 엔드포인트 통합
- 데이터 캐싱 구현
- 에러 핸들링 및 재시도 로직
- 날씨 데이터 정규화
3. 상태 관리
- Bloc 패턴으로 상태 관리
- 위치/날씨 상태 연동
- UI 상태 최적화
- 메모리 누수 방지
🎯 성과
- 위치 서비스 응답 시간 최적화
- 날씨 데이터 캐싱으로 API 호출 70% 감소
- 직관적인 UI/UX 구현
- 안정적인 에러 처리
📊 아키텍처 다이어그램
[Location Service] → [LocationBloc] → [WeatherBloc] → [UI Widgets]
↓ ↓ ↓
[Google Maps API] [LocationRepo] [WeatherRepo]
↓
[OpenWeather API]
🔑 핵심 코드
// 위치 변경 시 날씨 정보 업데이트
BlocListener<LocationBloc, LocationState>(
listener: (context, state) {
if (state is LocationSuccess) {
context.read<WeatherBloc>().add(
FetchWeather(
state.position.latitude,
state.position.longitude,
),
);
}
},
)
🌟 특징 및 장점
- 클린 아키텍처 적용
- 효율적인 상태 관리
- 확장 가능한 구조
- 재사용 가능한 컴포넌트
728x90
'코딩 > ♠♠기술 구현' 카테고리의 다른 글
구글 맵 연동과정 (1) | 2024.11.21 |
---|---|
날씨정보 가져오는 과정 (0) | 2024.11.21 |
날씨로 상품 추천 구현 (0) | 2024.11.21 |
geodecoding 위치 한글로 변경 (0) | 2024.11.21 |
ai 원픽 로직의 큰 흐름 (3) | 2024.11.19 |