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

@@ -144,19 +144,22 @@ class _NativeAdPlaceholderState extends State<NativeAdPlaceholder> {
final isDark = Theme.of(context).brightness == Brightness.dark;
return NativeTemplateStyle(
templateType: templateType,
mainBackgroundColor: isDark ? AppColors.darkSurface : Colors.white,
mainBackgroundColor:
isDark ? AppColors.darkSurface : AppColors.lightSurface,
cornerRadius: 0,
callToActionTextStyle: NativeTemplateTextStyle(
textColor: Colors.white,
textColor: AppColors.lightSurface,
backgroundColor: AppColors.lightPrimary,
style: NativeTemplateFontStyle.bold,
),
primaryTextStyle: NativeTemplateTextStyle(
textColor: isDark ? Colors.white : Colors.black87,
textColor:
isDark ? AppColors.darkTextPrimary : AppColors.lightTextPrimary,
style: NativeTemplateFontStyle.bold,
),
secondaryTextStyle: NativeTemplateTextStyle(
textColor: isDark ? Colors.white70 : Colors.black54,
textColor:
isDark ? AppColors.darkTextSecondary : AppColors.lightTextSecondary,
style: NativeTemplateFontStyle.normal,
),
);
@@ -250,14 +253,15 @@ class _NativeAdPlaceholderState extends State<NativeAdPlaceholder> {
BoxDecoration _decoration(bool isDark) {
return BoxDecoration(
color: isDark ? AppColors.darkSurface : Colors.white,
color: isDark ? AppColors.darkSurface : AppColors.lightSurface,
border: Border.all(
color: isDark ? AppColors.darkDivider : AppColors.lightDivider,
width: 2,
),
boxShadow: [
BoxShadow(
color: (isDark ? Colors.black : Colors.grey).withOpacity(0.08),
color: (isDark ? AppColors.darkBackground : AppColors.lightDivider)
.withValues(alpha: 0.3),
blurRadius: 8,
offset: const Offset(0, 4),
),