## 전면 광고 (AdService) - AdService 클래스 신규 생성 (lunchpick 패턴 참조) - Completer 패턴으로 광고 완료 대기 구현 - 로딩 오버레이로 앱 foreground 상태 유지 - 몰입형 모드 (immersiveSticky) 적용 - iOS 테스트 광고 ID 설정 ## SMS 스캔 버그 수정 - Isolate 내 Flutter 바인딩 접근 오류 해결 - _isoExtractServiceNameFromSender()에서 하드코딩 사용 - 로딩 위젯 화면 정중앙 배치 수정 ## 문서 및 설정 - CLAUDE.md 최적화 (글로벌 규칙 중복 제거) - Claude Code Skills 5개 추가 - flutter-build: 빌드/분석 - hive-model: Hive 모델 관리 - release-deploy: 릴리즈 배포 - sms-scanner: SMS 스캔 디버깅 - admob: 광고 구현 ## 버전 - 1.0.1+2 → 1.0.1+3
56 lines
1.3 KiB
Markdown
56 lines
1.3 KiB
Markdown
---
|
|
name: hive-model
|
|
description: Hive 데이터 모델 생성 및 수정. 새 모델 추가, 필드 변경, typeId 관리 시 사용.
|
|
allowed-tools: Bash, Read, Write, Edit, Glob
|
|
---
|
|
|
|
# Hive Model Management
|
|
|
|
## 현재 모델 (typeId)
|
|
|
|
| Model | typeId | 파일 |
|
|
|-------|--------|------|
|
|
| SubscriptionModel | 0 | `lib/models/subscription_model.dart` |
|
|
| CategoryModel | 1 | `lib/models/category_model.dart` |
|
|
| PaymentCardModel | 2 | `lib/models/payment_card_model.dart` |
|
|
|
|
## 새 모델 생성 시
|
|
|
|
```dart
|
|
import 'package:hive/hive.dart';
|
|
|
|
part 'new_model.g.dart';
|
|
|
|
@HiveType(typeId: 3) // 다음 사용 가능한 typeId
|
|
class NewModel extends HiveObject {
|
|
@HiveField(0)
|
|
final String id;
|
|
|
|
@HiveField(1)
|
|
final String name;
|
|
|
|
NewModel({required this.id, required this.name});
|
|
}
|
|
```
|
|
|
|
## 코드 생성
|
|
|
|
모델 변경 후 반드시 실행:
|
|
|
|
```bash
|
|
dart run build_runner build --delete-conflicting-outputs
|
|
```
|
|
|
|
## 주의사항
|
|
|
|
1. **typeId 충돌 금지**: 기존 typeId 재사용 불가
|
|
2. **HiveField 순서**: 기존 필드 인덱스 변경 금지 (데이터 손실)
|
|
3. **마이그레이션**: 필드 추가는 안전, 삭제/변경은 마이그레이션 필요
|
|
|
|
## main.dart 등록
|
|
|
|
```dart
|
|
Hive.registerAdapter(NewModelAdapter());
|
|
await Hive.openBox<NewModel>('newModelBox');
|
|
```
|