perf(app): 초기화 병렬 처리 및 UI 개선

## 성능 최적화

### main.dart
- 앱 초기화 병렬 처리 (Future.wait 활용)
- 광고 SDK, Hive 초기화 동시 실행
- Hive Box 오픈 병렬 처리
- 코드 구조화 (_initializeHive, _initializeNotifications)

### visit_provider.dart
- allLastVisitDatesProvider 추가
- 리스트 화면에서 N+1 쿼리 방지
- 모든 맛집의 마지막 방문일 일괄 조회

## UI 개선

### 각 화면 리팩토링
- AppDimensions 상수 적용
- 스켈레톤 로더 적용
- 코드 정리 및 일관성 개선
This commit is contained in:
JiWoong Sul
2026-01-12 15:16:05 +09:00
parent 21941443ee
commit 6f45c7b456
8 changed files with 252 additions and 205 deletions

View File

@@ -157,6 +157,23 @@ final lastVisitDateProvider = FutureProvider.family<DateTime?, String>((
return repository.getLastVisitDate(restaurantId);
});
/// 모든 맛집의 마지막 방문일을 한 번에 조회 (리스트 최적화용)
final allLastVisitDatesProvider =
FutureProvider<Map<String, DateTime?>>((ref) async {
final records = await ref.watch(visitRecordsProvider.future);
// restaurantId별 가장 최근 방문일 계산
final lastVisitMap = <String, DateTime>{};
for (final record in records) {
final existing = lastVisitMap[record.restaurantId];
if (existing == null || record.visitDate.isAfter(existing)) {
lastVisitMap[record.restaurantId] = record.visitDate;
}
}
return lastVisitMap;
});
/// 기간별 방문 기록 Provider
final visitRecordsByPeriodProvider =
FutureProvider.family<