주요 구현 완료 기능: - 구독 관리 (추가/편집/삭제/카테고리 분류) - 이벤트 할인 시스템 (기본값 자동 설정) - SMS 자동 스캔 및 구독 정보 추출 - 알림 시스템 (타임존 처리 안정화) - 환율 변환 지원 (KRW/USD) - 반응형 UI 및 애니메이션 - 다국어 지원 (한국어/영어) 버그 수정: - NotificationService tz.local 초기화 오류 해결 - MainScreenSummaryCard 레이아웃 오버플로우 수정 - 구독 추가 시 LateInitializationError 완전 해결 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
85 lines
2.8 KiB
Dart
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();
|
|
}
|
|
}
|