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:
@@ -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<
|
||||
|
||||
Reference in New Issue
Block a user