Files
submanager/lib/utils/animation_controller_helper.dart
JiWoong Sul 8619e96739 Initial commit: SubManager Flutter App
주요 구현 완료 기능:
- 구독 관리 (추가/편집/삭제/카테고리 분류)
- 이벤트 할인 시스템 (기본값 자동 설정)
- SMS 자동 스캔 및 구독 정보 추출
- 알림 시스템 (타임존 처리 안정화)
- 환율 변환 지원 (KRW/USD)
- 반응형 UI 및 애니메이션
- 다국어 지원 (한국어/영어)

버그 수정:
- NotificationService tz.local 초기화 오류 해결
- MainScreenSummaryCard 레이아웃 오버플로우 수정
- 구독 추가 시 LateInitializationError 완전 해결

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 14:29:53 +09:00

85 lines
2.8 KiB
Dart

import 'package:flutter/material.dart';
/// 애니메이션 컨트롤러 관리를 위한 헬퍼 클래스
class AnimationControllerHelper {
/// 모든 애니메이션 컨트롤러를 초기화하는 메서드
static void initControllers({
required TickerProvider vsync,
required AnimationController fadeController,
required AnimationController scaleController,
required AnimationController rotateController,
required AnimationController slideController,
required AnimationController pulseController,
required AnimationController waveController,
}) {
// 페이드 컨트롤러 초기화
fadeController.duration = const Duration(milliseconds: 600);
fadeController.forward();
// 스케일 컨트롤러 초기화
scaleController.duration = const Duration(milliseconds: 600);
scaleController.forward();
// 회전 컨트롤러 초기화
rotateController.duration = const Duration(seconds: 10);
rotateController.repeat();
// 슬라이드 컨트롤러 초기화
slideController.duration = const Duration(milliseconds: 600);
slideController.forward();
// 펄스 컨트롤러 초기화
pulseController.duration = const Duration(milliseconds: 1500);
pulseController.repeat(reverse: true);
// 웨이브 컨트롤러 초기화
waveController.duration = const Duration(milliseconds: 8000);
waveController.forward();
// 웨이브 애니메이션이 끝나면 다시 처음부터 부드럽게 시작하도록 설정
waveController.addStatusListener((status) {
if (status == AnimationStatus.completed) {
waveController.reset();
waveController.forward();
}
});
}
/// 모든 애니메이션 컨트롤러를 재설정하는 메서드
static void resetAnimations({
required AnimationController fadeController,
required AnimationController scaleController,
required AnimationController slideController,
required AnimationController pulseController,
required AnimationController waveController,
}) {
fadeController.reset();
scaleController.reset();
slideController.reset();
pulseController.repeat(reverse: true);
waveController.repeat();
fadeController.forward();
scaleController.forward();
slideController.forward();
}
/// 모든 애니메이션 컨트롤러를 해제하는 메서드
static void disposeControllers({
required AnimationController fadeController,
required AnimationController scaleController,
required AnimationController rotateController,
required AnimationController slideController,
required AnimationController pulseController,
required AnimationController waveController,
}) {
fadeController.dispose();
scaleController.dispose();
rotateController.dispose();
slideController.dispose();
pulseController.dispose();
waveController.dispose();
}
}