[flutter] getX 함수를 사용하여 터치 이벤트에 따른 배경색 변경하기

이번에는 Flutter 애플리케이션에서 getX 함수를 사용하여 터치 이벤트에 따라 배경색을 변경하는 방법에 대해 알아보겠습니다. getX 함수는 GetX 라이브러리에서 제공하는 상태 관리 솔루션으로, 간단하게 상태를 관리하고 반응형으로 UI를 업데이트할 수 있습니다.

1. GetX 라이브러리 설치

우선, GetX 라이브러리를 설치해야 합니다. pubspec.yaml 파일에서 dependencies 부분에 다음 코드를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  get: ^4.1.3

설정을 완료한 뒤, 터미널에서 flutter pub get 명령어를 입력하여 라이브러리를 다운로드합니다.

2. 프로젝트 설정

프로젝트에서 GetX를 사용하기 위해 main.dart 파일을 열어 다음 코드를 추가합니다.

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GetX Example'),
      ),
      body: Center(
        child: GestureDetector(
          onTap: () {
            // TODO: 배경색 변경하기
          },
          child: Container(
            width: 200,
            height: 200,
            color: Colors.grey,
            child: Center(
              child: Obx(() => Text(
                'Tap Here',
                style: TextStyle(fontSize: 20, color: Colors.white),
              )),
            ),
          ),
        ),
      ),
    );
  }
}

위 코드에서는 GetMaterialApp을 사용하여 GetX를 초기화하고, MyHomePage 위젯을 화면에 표시합니다. MyHomePage 위젯은 터치 이벤트가 발생하면 배경색을 변경하도록 설정되어 있습니다.

3. getX 함수를 사용하여 상태 관리

이제 getX 함수를 사용하여 터치 이벤트에 따라 배경색을 변경해보겠습니다. MyHomePage 클래스의 onTap 콜백 함수를 다음과 같이 변경합니다.

onTap: () {
  final Color newColor = Get.isDarkMode ? Colors.white : Colors.black;
  Get.changeTheme(newColor);
},

위 코드에서는 Get.isDarkMode를 사용하여 현재 어두운 테마인지 확인하고, 배경색을 변경하는 로직을 작성합니다. Get.changeTheme 함수를 호출하여 애플리케이션의 테마를 변경합니다.

4. 결과 확인

애플리케이션을 실행하고 터치 이벤트를 테스트해보세요. 터치할 때마다 배경색이 흑백으로 번갈아가며 변경되는 것을 확인할 수 있습니다.

결론

GetX 함수를 사용하여 터치 이벤트에 따라 배경색을 변경하는 방법을 알아보았습니다. GetX를 사용하면 간단하게 상태를 관리하고 UI를 업데이트할 수 있으므로, 편리하게 Flutter 애플리케이션을 개발할 수 있습니다.

참고 자료