[flutter] 플러터에서의 Stack 위젯을 활용한 커스텀 애니메이션 구현 방법

Flutter는 Google에서 개발한 모바일 애플리케이션 프레임워크로, 다양한 애니메이션 효과를 구현할 수 있는 다양한 위젯을 제공합니다. 이 중에서 Stack 위젯은 부모 위젯에 여러 개의 자식 위젯을 겹쳐서 배치할 수 있도록 도와줍니다. 이번 포스팅에서는 Stack 위젯을 사용하여 커스텀 애니메이션을 구현하는 방법을 알아보겠습니다.

Step 1: Stack 위젯 생성하기

Stack 위젯을 생성하려면 다음과 같이 코드를 작성합니다.

Stack(
  children: [
    // 자식 위젯들을 여기에 추가합니다.
  ],
)

Step 2: 커스텀 애니메이션 구현하기

애니메이션을 구현하기 위해서는 AnimatedPositioned 위젯을 사용합니다. 이 위젯은 Stack 위젯의 자식으로 추가하고, 위치와 크기를 애니메이션으로 변경할 수 있습니다.

AnimatedPositioned(
  duration: Duration(milliseconds: 500), // 애니메이션 지속 시간 설정
  left: 50, // 시작 위치 설정
  top: 50,
  child: Container(
    width: 100,
    height: 100,
    color: Colors.red,
  ),
)

위 코드에서는 AnimatedPositioned 위젯을 사용하여 위치에 애니메이션을 적용했습니다. duration 속성으로 애니메이션 지속 시간을 설정할 수 있고, left와 top 속성으로 시작 위치를 설정할 수 있습니다. child 속성에는 애니메이션을 적용할 위젯을 추가합니다. 위 코드에서는 빨간색의 정사각형을 추가한 예시입니다.

Step 3: 애니메이션 트리거 설정하기

애니메이션 효과를 트리거하기 위해서는 애니메이션 컨트롤러를 사용해야 합니다. 다음과 같이 코드를 작성하여 애니메이션을 트리거할 수 있습니다.

AnimationController controller;

@override
void initState() {
  super.initState();
  controller = AnimationController(
    duration: Duration(milliseconds: 500),
    vsync: this,
  );
}

void startAnimation() {
  controller.forward(); // 애니메이션 시작
}

void reverseAnimation() {
  controller.reverse(); // 애니메이션 역재생
}

@override
void dispose() {
  controller.dispose(); // 애니메이션 컨트롤러 해제
  super.dispose();
}

위 코드에서는 initState() 함수에서 애니메이션 컨트롤러를 초기화하고, startAnimation() 함수와 reverseAnimation() 함수에서 애니메이션을 시작하고 역재생할 수 있도록 설정했습니다. 마지막으로 dispose() 함수에서 애니메이션 컨트롤러를 해제합니다.

결론

이번 포스팅에서는 Flutter에서 Stack 위젯을 활용하여 커스텀 애니메이션을 구현하는 방법을 알아보았습니다. Stack 위젯과 AnimatedPositioned 위젯을 사용하면 다양한 애니메이션 효과를 구현할 수 있으며, 애니메이션 컨트롤러를 사용하여 애니메이션을 트리거할 수도 있습니다. 이러한 기능들을 활용하여 독특하고 멋진 애니메이션 효과를 구현해보세요.


참고 자료: