[flutter] 플러터에서의 Stack 위젯을 이용한 화면 전환 애니메이션 구현 방법

플러터에서는 화면 전환 애니메이션을 구현하기 위해 Stack 위젯을 사용할 수 있습니다. Stack 위젯은 겹쳐진 위젯들을 쌓는 역할을 하며, 이를 활용하여 화면 전환을 구현할 수 있습니다.

다음은 플러터에서 Stack 위젯을 이용하여 화면 전환 애니메이션을 구현하는 방법을 설명합니다.

1. 화면 전환 위젯 준비

먼저, 화면 전환에 사용할 위젯을 준비해야 합니다. 일반적으로 두 가지의 화면 전환 위젯을 사용합니다. 첫 번째는 현재 화면의 위에 쌓여질 위젯이고, 두 번째는 나타날 화면의 위젯입니다.

2. Stack 위젯 사용

화면 전환 애니메이션을 구현하기 위해 Stack 위젯을 사용합니다. 이때, Stack 위젯은 화면 전환 위젯들을 쌓을 컨테이너 역할을 합니다. 첫 번째 화면과 두 번째 화면을 Positioned 위젯을 사용하여 각각의 위치를 지정합니다.

Stack(
  children: [
    Positioned(
      top: 0,
      bottom: 0,
      left: 0,
      right: 0,
      child: FirstScreen(),
    ),
    Positioned(
      top: 0,
      bottom: 0,
      left: 0,
      right: 0,
      child: SecondScreen(),
    ),
  ],
)

3. 화면 전환 애니메이션 적용

Stack 위젯을 사용하여 화면 전환을 구현한 후, 애니메이션 효과를 주기 위해 AnimatedPositioned 위젯을 활용할 수 있습니다. AnimatedPositioned 위젯을 사용하면 화면 전환 중 위치가 변경되는 애니메이션 효과를 적용할 수 있습니다.

AnimatedPositioned(
  duration: const Duration(milliseconds: 500),
  curve: Curves.easeInOut,
  top: isSecondScreenVisible ? 0 : screenHeight,
  bottom: isSecondScreenVisible ? screenHeight : 0,
  left: 0,
  right: 0,
  child: SecondScreen(),
),

위의 예시에서는 isSecondScreenVisible 변수를 사용하여 현재 화면이 첫 번째 화면인지 두 번째 화면인지 판단하고, 이에 따라 화면의 위치를 변경합니다.

4. 화면 전환 트리거

화면 전환을 트리거하는 이벤트를 구현해야 합니다. 일반적으로는 버튼 클릭 등의 사용자 입력에 따라 트리거하는 방식을 많이 사용합니다. 예를 들어, 다음은 버튼 클릭 이벤트에 따라 isSecondScreenVisible 변수를 토글하는 코드입니다.

GestureDetector(
  onTap: () {
    setState(() {
      isSecondScreenVisible = !isSecondScreenVisible;
    });
  },
  child: Container(
    child: Text('Toggle Screen'),
  ),
),

5. 기타 수정 및 개선사항

위의 예시 코드에서는 간단한 화면 전환 애니메이션을 구현한 것입니다. 필요에 따라 애니메이션의 속도, 이동 경로 등을 수정할 수 있습니다. 또한, 화면 전환 애니메이션에 추가적인 효과나 변형을 적용할 수도 있습니다.

결론

위에서 설명한 방법을 참고하여 플러터에서 Stack 위젯을 이용한 화면 전환 애니메이션을 구현할 수 있습니다. 화면 전환에 애니메이션을 추가하면 사용자에게 더욱 생동감 있는 경험을 제공할 수 있습니다.

참고 자료