[flutter] getX 함수를 사용하여 터치 이벤트에 따른 시간에 따른 애니메이션 이동하기
Flutter의 getX 함수를 사용하면 터치 이벤트에 따라 시간에 따라 애니메이션을 이동시킬 수 있습니다. getX 함수는 GetX 패키지의 한 가지 기능으로, 사용자의 터치 이벤트를 추적하고 그에 따라 애니메이션을 조작할 수 있게 해줍니다.
GetX 패키지 설치하기
먼저, GetX 패키지를 설치해야 합니다. pubspec.yaml
파일에 GetX 패키지를 추가하고, 디펜던시를 업데이트합니다.
dependencies:
flutter:
sdk: flutter
get: ^4.3.8
터미널에서 flutter pub get
명령어를 실행하여 패키지를 설치합니다.
애니메이션을 위한 컨트롤러 설정하기
GetX 함수를 사용하여 애니메이션을 조작하기 위해, 먼저 애니메이션을 위한 컨트롤러를 설정해야 합니다. 이 컨트롤러는 애니메이션의 현재 위치와 시간을 추적합니다.
import 'package:get/get.dart';
class AnimationController extends GetxController {
double position = 0.0;
double time = 0.0;
void updatePosition(double newPosition) {
position = newPosition;
}
void updateTime(double newTime) {
time = newTime;
}
}
애니메이션 이동 구현하기
이제 애니메이션 이동을 구현할 수 있습니다. 예를 들어, 사용자가 화면을 터치했을 때, updatePosition
메서드를 호출하여 애니메이션의 위치를 업데이트하고, updateTime
메서드를 호출하여 애니메이션의 시간을 업데이트합니다.
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class AnimationScreen extends StatelessWidget {
final AnimationController animationController = Get.put(AnimationController());
@override
Widget build(BuildContext context) {
return GestureDetector(
onTapUpdate: (tapDetails) {
double newPosition = tapDetails.globalPosition.dx;
animationController.updatePosition(newPosition);
double newTime = DateTime.now().millisecondsSinceEpoch.toDouble();
animationController.updateTime(newTime);
},
child: Container(
width: double.infinity,
height: 200.0,
color: Colors.blue,
child: Obx(() {
return AnimatedContainer(
duration: Duration(seconds: 1),
curve: Curves.easeInOut,
transform: Matrix4.translationValues(
animationController.position,
0.0,
0.0,
),
child: Text(
'Animation',
style: TextStyle(
fontSize: 24.0,
color: Colors.white,
),
),
);
}),
),
);
}
}
이 예제에서는 사용자의 터치 이벤트에 따라 position
변수와 time
변수를 업데이트하고, AnimatedContainer
위젯의 transform 속성을 사용하여 애니메이션 이동을 구현합니다. 애니메이션의 시간과 위치가 변경될 때마다 AnimatedContainer
의 애니메이션이 업데이트됩니다.
이제 위젯을 사용하여 화면에 애니메이션 이동을 구현할 수 있습니다.