2025-11-25
암시적 애니메이션 (Implicit Animation)
- AnimatedContainer 등 암시적 애니메이션 위젯은 특정 속성 값이 변경되면 자동으로 애니메이션이 실행된다.
- 대부분의 암시적 애니메이션 위젯은 duration, curve 속성을 공통적으로 가진다.
- 값 변경을 감지해야 하므로 부모 위젯에서 상태(state) 관리가 필요하다.
Hero 애니메이션
- 화면 이동 시 두 화면에 공통적으로 존재하는 요소(이미지 등)를 자연스럽게 연결하는 애니메이션을 제공한다.
- 두 화면의 위젯에 동일한 tag 값을 사용해야 애니메이션이 동작한다.
명시적 애니메이션 (Explicit Animation)
- 개발자가 직접 애니메이션 흐름을 제어하는 방식.
- AnimationController를 사용한다.
- forward(), stop(), reset() 등 다양한 제어 메서드 제공.
- 생성 시 vsync 파라미터가 필수.
- vsync는 TickerProvider를 요구하며, StatefulWidget에서 TickerProviderStateMixin을 with로 적용해서 사용한다.
- 애니메이션의 시작·끝 값을 정의할 때는 Tween 객체를 사용하고, AnimationController와 결합해 최종적으로 Animation 객체를 만든다.
Ticker란?
- Flutter가 매 프레임마다 보내는 “애니메이션 업데이트 해!” 라는 신호.
- 이 신호를 받아 애니메이션의 값을 계속 갱신한다.
TickerProviderMixin이란?
- 티커를 만들어 애니메이션과 동기화할 수 있는 기능을 제공하는 Mixin.
- State 객체에 이 믹스인을 적용하면, 해당 객체를 AnimationController의 vsync로 사용할 수 있게 된다.
- 불필요한 리소스 낭비 없이 프레임 단위 애니메이션을 효율적으로 동작하게 한다.