[flutter] get_it를 사용하여 플러터 앱에서 상태 관리를 어떻게 구현하는가?

플러터는 매우 강력한 UI 프레임워크로서, 상태 관리는 앱의 성능과 유지 보수성에 매우 중요한 부분입니다. 여러 가지 상태 관리 패턴이 있지만, 이 문서에서는 ‘get_it’ 패키지를 사용하여 플러터 앱에서 의존성 주입을 구현하는 방법을 알아보겠습니다.

get_it 패키지란?

get_it는 의존성 주입(Dependency Injection) 기능을 제공하는 패키지입니다. 의존성 주입을 사용하면 코드의 재사용성과 유지 보수성을 향상시킬 수 있으며, 앱의 상태 관리를 보다 쉽게 처리할 수 있습니다.

get_it 패키지 설치

먼저, get_it 패키지를 사용하기 위해 pubspec.yaml 파일에 다음과 같은 의존성을 추가해야 합니다:

dependencies:
  get_it: ^7.1.3

의존성을 추가한 후 터미널에서 flutter pub get 명령을 실행하여 패키지를 설치합니다.

상태 관리를 위한 모델 클래스 생성

get_it를 사용하여 상태 관리를 구현하기 위해 먼저 모델 클래스를 작성해야 합니다. 이 모델 클래스는 앱 전체에서 공유되는 상태를 저장하고 조작하는 데 사용됩니다. 예를 들어, 로그인 상태나 테마 설정과 같은 전역 상태를 관리할 수 있습니다.

class AppState {
  bool isLoggedIn = false;
  ThemeData themeData = ThemeData.light();
}

위의 예제에서는 AppState 클래스를 정의하였고, isLoggedIn 변수는 사용자의 로그인 상태를 나타내고, themeData는 앱의 테마를 저장합니다.

get_it를 사용하여 의존성 주입 구현하기

get_it를 사용하여 의존성 주입을 구현하기 위해 먼저 앱 내에서 상태 관리에 사용될 AppState 인스턴스를 등록해야 합니다. 이를 위해 main.dart 파일에서 get_it 패키지를 import한 후, GetIt 클래스의 인스턴스를 생성하고 registerSingleton 메서드를 사용하여 AppState 인스턴스를 등록합니다.

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

import 'models/app_state.dart';

void main() {
  GetIt locator = GetIt.instance;
  locator.registerSingleton<AppState>(AppState());

  runApp(MyApp());
}

위의 예제에서는 GetIt 클래스의 registerSingleton 메서드를 사용하여 AppState 클래스의 인스턴스를 등록하였습니다.

get_it를 사용하여 상태 관리

이제 get_it를 사용하여 등록한 상태를 앱에서 사용하는 방법을 알아보겠습니다. main.dart 파일에서 GetIt 클래스의 인스턴스를 가져오고, 등록한 AppState 인스턴스에 액세스하여 상태를 변경하거나 가져올 수 있습니다.

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final appState = GetIt.instance.get<AppState>();

    return MaterialApp(
      theme: appState.themeData,
      home: Scaffold(
        body: Center(
          child: RaisedButton(
            child: Text(appState.isLoggedIn ? 'Logout' : 'Login'),
            onPressed: () {
              appState.isLoggedIn = !appState.isLoggedIn;
            },
          ),
        ),
      ),
    );
  }
}

위의 예제에서는 GetIt 클래스의 get 메서드를 사용하여 등록한 AppState 인스턴스에 액세스하고, isLoggedIn 변수를 변경하여 상태를 업데이트합니다. 이렇게 상태를 업데이트하면 해당 상태를 사용하는 모든 위젯에 변경된 값을 반영할 수 있습니다.

마치며

get_it 패키지를 사용하여 플러터 앱에서 상태 관리를 구현하는 방법을 알아보았습니다. 의존성 주입을 이용하면 코드의 가독성과 유지 보수성을 향상시킬 수 있으며, get_it를 사용하여 상태 관리를 구현하면 앱의 전역 상태를 쉽게 관리할 수 있습니다. get_it 패키지의 공식 문서1를 참조하여 자세한 내용을 학습해보세요.