
AnimatedContainer는 Flutter의 위젯으로, Container와 거의 같지만 속성(너비, 높이, 색상, 패딩, 정렬, 변환 등)이 변경될 때 그 변경을 자동으로(암시적) 지정한 지속시간(duration)과 곡선(curve)에 따라 부드럽게 애니메이션되도록 해주는 위젯입니다. 별도의 AnimationController를 만들 필요 없이 setState로 속성을 바꾸면 AnimatedContainer가 이전 값에서 새 값으로 서서히 보간(transition)합니다. 주요 특징 - 핵심 속성: duration(필수에 가깝게 지정), curve(선택), width, height, padding, margin, alignment, decoration, transform, color, child, onEnd(애니메이션 종료 콜백) 등. - 암시적 애니메이션: 개발자가 직접 애니메이션 타임라인을 제어하지 않아도 Flutter이 내부에서 Tween을 만들어 값들을 보간함. - 호환 가능한 타입 간에만 보간이 가능: 예를 들어 색상(Color), EdgeInsets, double(크기), Alignment, Matrix4(Transform) 등은 보간되지만, child 위젯의 교체 자체는 자동으로 애니메이션되지 않음(그럴 때는 AnimatedSwitcher 사용). - 성능 고려: 속성을 매우 자주 변경하면 내부적으로 애니메이션을 새로 생성하므로 비용이 클 수 있음. 복잡한 제어가 필요하면 명시적 애니메이션(AnimationController 등)을 고려. 간단한 사용 예 (개념 설명용) Container 대신 AnimatedContainer를 사용하고 setState로 속성 변경: final container = AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, width: isExpanded ? 200.0 : 100.0, height: 100.0, color: isExpanded ? Colors.blue : Colors.red, child: Text('애니메이션 박스'), ); 어떤 경우에 쓰나 - 버튼 클릭이나 상태 변화에 따라 크기/색상/여백이 부드럽게 변하는 UI - 레이아웃 전환(간단한 케이스) - 사용자 인터랙션에 따른 시각적 피드백 요약하자면 AnimatedContainer는 속성 변화에 대해 자동으로 애니메이션을 적용해 주는 편리한 위젯이며, 간단한 레이아웃/스타일 전환을 만들 때 매우 유용합니다.