[flutter] getX 함수를 사용하여 터치 이벤트에 따른 위젯 카메라 이동하기

Flutter에서는 getX 라이브러리를 사용하여 터치 이벤트를 쉽게 처리할 수 있습니다. 이번 글에서는 getX를 활용하여 터치 이벤트에 따라 위젯의 카메라를 이동시키는 방법에 대해 알아보겠습니다.

1. getX 라이브러리 추가하기

먼저, getX를 사용하기 위해 필요한 라이브러리를 추가해야 합니다. pubspec.yaml 파일을 열고 dependencies 섹션에 다음 코드를 추가합니다:

dependencies:
  flutter:
    sdk: flutter
  getX: ^4.0.0

이후 터미널에서 flutter pub get 명령어를 실행하여 라이브러리를 설치합니다.

2. 카메라 이동 위젯 만들기

다음으로는 카메라 이동을 처리할 위젯을 만들어야 합니다. 아래의 코드를 참고하여 CameraMovementWidget을 생성합니다:

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

class CameraMovementWidget extends StatelessWidget {
  // 카메라의 현재 위치를 저장할 변수
  final position = Offset(0, 0).obs;

  // 터치 이벤트 처리를 위한 함수
  void handlePanUpdate(DragUpdateDetails details) {
    position.value += details.delta;
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      // 터치 이벤트 핸들러 등록
      onPanUpdate: handlePanUpdate,
      child: Obx(
        () => Transform.translate(
          // 현재 카메라 위치에 따라 위젯 이동
          offset: position.value,
          child: Container(
            width: 200,
            height: 200,
            color: Colors.blue,
          ),
        ),
      ),
    );
  }
}

위 코드에서는 obs를 사용하여 position 변수를 관찰 가능한 변수로 선언하였습니다. 터치 이벤트가 발생할 때마다 handlePanUpdate 함수가 호출되어 position 변수 값을 업데이트하고, Obx 위젯을 사용하여 position 변수의 변화를 감지하여 화면을 업데이트합니다. Transform.translate 위젯을 사용하여 현재 카메라 위치에 따라 위젯을 이동시킵니다.

3. 카메라 이동 위젯 사용하기

이제 위에서 작성한 CameraMovementWidget을 실제로 사용해보겠습니다. 다음과 같이 메인 위젯을 작성합니다:

import 'package:flutter/material.dart';

import 'camera_movement_widget.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GetX Camera Movement'),
        ),
        body: Center(
          child: CameraMovementWidget(),
        ),
      ),
    );
  }
}

위 코드에서는 CameraMovementWidgetCenter 위젯으로 감싸서 화면 중앙에 위치시키고 있습니다.

4. 실행해보기

이제 앱을 실행하여 카메라 이동을 확인해보세요. 앱 화면에서 손가락으로 화면을 터치하고 드래그하면, 해당 방향으로 위젯이 이동하는 것을 확인할 수 있습니다.

결론

Flutter의 getX 라이브러리를 사용하면 터치 이벤트에 따라 위젯의 카메라를 쉽게 이동시킬 수 있습니다. 위의 예시를 참고하여 본인의 앱에 적용해보세요. getX의 다양한 기능을 활용하여 더욱 다양한 터치 이벤트를 처리할 수 있습니다.

참고 자료