[flutter] getX 함수를 사용하여 터치 이벤트에 따른 위젯 회전 각도 계산하기

이 문서에서는 Flutter 프레임워크의 GetX 함수를 사용하여 터치 이벤트에 따른 위젯의 회전 각도를 계산하는 방법을 알아보겠습니다.

getX 함수란?

GetX는 Flutter의 GestureDetector 클래스의 속성 중 하나로, 사용자의 터치 동작에 대한 이벤트를 감지하고 처리하는 기능을 제공합니다. 이 함수는 onHorizontalDragUpdateonVerticalDragUpdate 이벤트를 사용하여 위젯의 회전 각도를 계산하는 데에 사용됩니다.

위젯 회전 각도 계산하기

  1. GetX 함수를 사용하여 GestureDetector 위젯을 생성합니다.
GestureDetector(
  onHorizontalDragUpdate: (DragUpdateDetails details) {
    // 가로 스와이프 동작 감지
    double deltaX = details.delta.dx;   // x축 이동 거리
    double angle = deltaX * 0.1;   // 회전 각도 계산식 (임의의 상수 0.1을 곱하여 회전 감도를 조정할 수 있음)
    
    setState(() {
      // 위젯의 각도 업데이트
      widget.angle += angle;
    });
  },
  onVerticalDragUpdate: (DragUpdateDetails details) {
    // 세로 스와이프 동작 감지
    double deltaY = details.delta.dy;   // y축 이동 거리
    double angle = deltaY * 0.1;   // 회전 각도 계산식 (임의의 상수 0.1을 곱하여 회전 감도를 조정할 수 있음)
    
    setState(() {
      // 위젯의 각도 업데이트
      widget.angle += angle;
    });
  },
  child: Transform.rotate(
    angle: widget.angle,
    child: YourWidget(),
  ),
)

위 코드에서는 onHorizontalDragUpdateonVerticalDragUpdate 이벤트를 사용하여 각각 가로 스와이프와 세로 스와이프 동작을 감지합니다. Delta 값을 이용하여 이동 거리를 계산하고, 계산된 값에 회전 각도를 적용하여 위젯을 회전시킵니다. angle 값은 setState 함수를 사용하여 업데이트되며, Transform.rotate 위젯을 통해 실제 회전이 적용되는 위젯에 각도를 전달합니다.

참고 자료