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
를 감지합니다. MyController
의 x
값을 이용하여 Alignment
을 설정하여 Container
위젯을 변형시킵니다. 또한, onPanUpdate
콜백을 사용하여 터치 이벤트를 검출하고, onTouch
메소드를 호출하여 x
값을 업데이트합니다.
이제 MyWidget
을 화면에 출력하면 터치 이벤트에 따라 변형 효과를 가진 위젯을 확인할 수 있습니다.
위의 예시는 간단한 예시일 뿐, 실제로는 더 다양한 방식으로 getX 함수와 GetX 패키지를 활용하여 터치 이벤트에 따른 변형 효과를 구현할 수 있습니다. 자세한 내용은 GetX 패키지의 문서를 참고해주세요.