[flutter] getX 함수를 사용하여 터치 이벤트에 따른 변형효과를 가진 위젯 구현하기

Flutter에서는 getX 함수를 사용하여 터치 이벤트에 따라 위젯을 변형시킬 수 있습니다. getX 함수는 GetX 패키지에서 제공되는 함수로써, 간단하게 터치 좌표를 가져올 수 있습니다. 이를 활용하여 터치 이벤트에 따른 변형효과를 가진 위젯을 구현해보겠습니다.

1. GetX 패키지 추가하기

먼저, GetX 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 dependencies를 추가해주세요.

dependencies:
  flutter:
    sdk: flutter
  get:

그리고 터미널에서 flutter pub get 명령어를 실행하여 패키지를 다운로드 받으세요.

2. 터치 이벤트 검출하기

GetX 패키지는 GetXController 클래스를 제공합니다. 이 클래스를 활용하여 터치 이벤트를 감지할 수 있습니다. 아래와 같이 GetXController 클래스를 상속받은 컨트롤러를 작성해보겠습니다.

import 'package:get/get.dart';

class MyController extends GetxController {
  double x = 0.0;
  
  void onTouch(double touchPosition) {
    x = touchPosition;
    update();
  }
}

위 코드에서는 터치 좌표를 저장할 변수 x를 선언하고, onTouch 메소드를 정의했습니다. onTouch 메소드는 터치 이벤트 발생 시 호출되며, 터치 좌표를 받아와 x 값을 설정한 뒤 update 함수를 호출하여 위젯을 다시 그리도록 합니다.

3. 위젯 구현하기

이제 터치 이벤트에 따라 변형 효과를 가진 위젯을 구현해보겠습니다. 예시로 Container 위젯을 사용하겠습니다.

import 'package:flutter/material.dart';
import 'package:get/get.dart';

class MyWidget extends StatelessWidget {
  final MyController controller = Get.put(MyController());

  @override
  Widget build(BuildContext context) {
    return GetBuilder<MyController>(
      builder: (_) {
        return GestureDetector(
          onPanUpdate: (details) {
            controller.onTouch(details.localPosition.dx);
          },
          child: Container(
            width: 200.0,
            height: 200.0,
            color: Colors.blue,
            alignment: Alignment(controller.x / 200, 0),
            child: Text(
              'GetX',
              style: TextStyle(fontSize: 20.0, color: Colors.white),
            ),
          ),
        );
      },
    );
  }
}

위 코드에서는 MyWidget 클래스를 선언하고, MyController 인스턴스를 생성하고 GetX의 GetBuilder 위젯을 사용하여 MyController를 감지합니다. MyControllerx 값을 이용하여 Alignment을 설정하여 Container 위젯을 변형시킵니다. 또한, onPanUpdate 콜백을 사용하여 터치 이벤트를 검출하고, onTouch 메소드를 호출하여 x 값을 업데이트합니다.

이제 MyWidget을 화면에 출력하면 터치 이벤트에 따라 변형 효과를 가진 위젯을 확인할 수 있습니다.

위의 예시는 간단한 예시일 뿐, 실제로는 더 다양한 방식으로 getX 함수와 GetX 패키지를 활용하여 터치 이벤트에 따른 변형 효과를 구현할 수 있습니다. 자세한 내용은 GetX 패키지의 문서를 참고해주세요.

참고 자료