[flutter] getX 함수를 사용하여 터치 이벤트에 따른 투명한 위젯 적용하기

Flutter에서는 getX 함수를 사용하여 터치 이벤트를 캡처하고 해당 이벤트에 따라 위젯을 조작할 수 있습니다. 이 글에서는 getX 함수를 사용하여 터치 이벤트에 따라 투명한 위젯을 적용하는 방법에 대해 알아보겠습니다.

getX 패키지 설치하기

getX 함수를 사용하기 위해서는 getX 패키지를 먼저 설치해야 합니다. pubspec.yaml 파일에 다음과 같이 getX 패키지를 추가합니다.

dependencies:
  getX: ^3.15.0

설치가 완료되면 패키지를 가져와서 사용할 준비가 끝납니다.

투명한 위젯 만들기

먼저, 투명한 위젯을 만들어 보겠습니다. TransparentWidget이라는 StatelessWidget 클래스를 생성하고, Container 위젯을 사용하여 투명한 위젯을 만들겠습니다.

import 'package:flutter/material.dart';

class TransparentWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.transparent, // 배경색을 투명으로 설정
      width: 200,
      height: 200,
      child: Center(
        child: Text(
          '투명한 위젯',
          style: TextStyle(
            fontSize: 20,
            color: Colors.white,
          ),
        ),
      ),
    );
  }
}

터치 이벤트에 따른 투명한 위젯 적용하기

이제 getX 함수를 사용하여 터치 이벤트에 따라 투명한 위젯을 적용해보겠습니다.

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

class MyPage extends StatelessWidget {
  final _controller = Get.put(Controller());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GetX 터치 이벤트'),
      ),
      body: GestureDetector(
        onTap: () {
          _controller.toggleVisibility(); // 터치 이벤트가 발생하면 위젯의 투명도를 토글합니다.
        },
        child: Obx(
          () => _controller.isVisible.value
              ? TransparentWidget()
              : Container(),
        ),
      ),
    );
  }
}

class Controller extends GetxController {
  var isVisible = true.obs;

  void toggleVisibility() {
    isVisible.value = !isVisible.value;
  }
}

위 코드에서는 getX의 GetBuilder 대신 GetX를 사용하여 _controller의 isVisible 값을 감시하고, 투명한 위젯의 가시성을 토글합니다. GestureDetector가 인식하는 모든 터치 이벤트에 대해 toggleVisibility 함수가 호출되므로 터치 이벤트가 발생할 때마다 위젯의 가시성이 토글됩니다.

이제 MyPage 위젯을 실행하면 터치 이벤트에 따라 투명한 위젯이 나타나거나 사라지는 것을 확인할 수 있습니다.

결론

getX 함수를 사용하여 터치 이벤트에 따른 투명한 위젯을 적용하는 방법에 대해 알아보았습니다. getX 패키지를 사용하면 터치 이벤트를 손쉽게 캡처하고, 해당 이벤트에 따라 위젯을 조작할 수 있습니다. 이를 활용하여 많은 Flutter 앱에서 유용하게 사용할 수 있습니다.

참고 자료