[flutter] get_it를 사용하여 플러터 앱에서 로컬 데이터 저장소를 어떻게 활용하는가?

소개

Flutter에서 로컬 데이터 저장소를 사용하는 것은 앱의 상태 관리에 매우 중요합니다. 이를 위해 dependency injection(DI)을 사용하여 효율적으로 데이터 저장소를 관리할 수 있습니다. 이 글에서는 get_it 패키지를 사용하여 DI를 구현하고, 플러터 앱에서 로컬 데이터 저장소를 어떻게 활용하는지 알아보겠습니다.

get_it 패키지 설치하기

get_it 패키지는 의존성 관리를 위해 사용되는 패키지입니다. 다음과 같이 pubspec.yaml 파일에 get_it 패키지를 추가합니다.

dependencies:
  get_it: ^7.1.3

그리고 패키지를 적용하기 위해 터미널에서 다음 명령을 실행합니다.

flutter pub get

get_it 등록하기

DI를 구현하기 위해서는 get_it 인스턴스를 등록해야 합니다. 가장 일반적인 방법은 main.dart 파일에서 사용되는 데이터 저장소를 등록하는 것입니다. 다음과 같이 코드를 작성해봅시다.

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

// 데이터 저장소 클래스
class LocalStorage {
  void saveData(String data) {
    // 데이터를 저장하는 로직
  }
}

void main() {
  GetIt.instance.registerLazySingleton(() => LocalStorage());
  runApp(MyApp());
}

위의 코드에서는 LocalStorage 클래스의 인스턴스를 get_it에 등록하고 있습니다. registerLazySingleton 메서드를 사용하면 앱 내에서 공유되는 single instance로 등록되어 효율적인 메모리 관리를 할 수 있습니다.

get_it 사용하기

이제 등록된 데이터 저장소 인스턴스를 어떻게 사용하는지 알아보겠습니다. 위에서 등록한 LocalStorage 인스턴스를 다른 화면에서 사용하는 예제 코드를 작성해보겠습니다.

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

class DataSavingScreen extends StatelessWidget {
  final LocalStorage localStorage = GetIt.instance<LocalStorage>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Data Saving Screen'),
      ),
      body: Center(
        child: FlatButton(
          onPressed: () {
            localStorage.saveData('Example data');
          },
          child: Text('Save Data'),
        ),
      ),
    );
  }
}

위의 코드에서는 GetIt.instance<LocalStorage>()를 통해 get_it에서 등록된 LocalStorage 인스턴스를 가져와 사용하고 있습니다.

이로써 get_it 패키지를 사용하여 플러터 앱에서 로컬 데이터 저장소를 효율적으로 활용하는 방법을 알아보았습니다. get_it을 사용하면 의존성 관리를 편리하게 할 수 있고, 데이터 저장소를 효율적으로 관리할 수 있습니다.

더 자세한 내용은 get_it 패키지 문서를 참고하세요.