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

앱 개발에서 데이터 저장소는 매우 중요한 역할을 합니다. 로컬 데이터 저장소를 사용하면 앱이 오프라인 상태에서도 데이터를 유지하고 사용할 수 있습니다. 이번 기술 블로그에서는 get_it 패키지를 사용하여 플러터 앱에서 로컬 데이터 저장소를 사용하는 방법을 알아보겠습니다.

1. get_it 패키지 추가하기

먼저, get_it 패키지를 플러터 프로젝트에 추가해야 합니다. pubspec.yaml 파일을 열고 dependencies 섹션에 다음과 같이 get_it 패키지를 추가합니다:

dependencies:
  get_it: ^7.1.3

저장 후 패키지를 가져오기 위해 pub get 명령을 실행합니다:

$ flutter pub get

2. 데이터 저장소 클래스 만들기

이제 로컬 데이터를 저장하고 사용하기 위한 데이터 저장소 클래스를 만들어 보겠습니다. lib 폴더 내에 data_store.dart 파일을 생성하고 다음 코드를 추가합니다:

import 'package:get_it/get_it.dart';

class DataStore {
  static final getIt = GetIt.instance;

  String? _data;

  String? get data => _data;

  set data(String? newData) {
    _data = newData;
    getIt.signalReady(this);
  }
}

위의 코드에서 DataStore 클래스는 GetIt 인스턴스를 사용하여 싱글톤으로 관리됩니다. _data 변수는 저장할 데이터를 나타냅니다. data getter와 setter는 데이터를 가져오고 업데이트하는 데 사용됩니다.

3. 데이터 저장소 등록하기

이제 DataStore 클래스를 get_it에 등록해야 합니다. main.dart 파일을 열고 main() 함수 위에 다음 코드를 추가합니다:

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

void main() {
  DataStore.getIt.registerSingleton<DataStore>(DataStore());
  runApp(MyApp());
}

위의 코드에서 DataStore.getIt.registerSingleton<DataStore>(DataStore())DataStore 클래스의 인스턴스를 등록하는 역할을 합니다. 앱이 시작될 때 이 인스턴스를 사용하여 데이터 저장소에 액세스할 수 있습니다.

4. 데이터 저장소 사용하기

이제 DataStore를 사용하여 데이터를 저장하고 가져오는 예를 살펴보겠습니다. 적절한 위젯 파일에서 다음 코드를 추가하여 데이터를 저장하고 가져옵니다:

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

class ExampleWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {
        DataStore.getIt<DataStore>().data = 'Hello, World!';
      },
      child: Text('Save Data'),
    );
  }
}

class AnotherWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text(
      DataStore.getIt<DataStore>().data ?? 'No data',
    );
  }
}

위의 코드에서 DataStore.getIt<DataStore>().data을 사용하여 데이터를 가져옵니다. 데이터를 저장하려면 DataStore.getIt<DataStore>().data = 'Hello, World!'와 같이 setter를 사용합니다.

이제 여러 위젯에서 DataStore의 데이터를 공유하고 업데이트할 수 있습니다.

결론

get_it 패키지를 사용하여 플러터 앱에서 로컬 데이터 저장소를 사용하는 방법을 알아보았습니다. 데이터를 저장하고 가져오는 데 필요한 기능들을 DataStorage 클래스에 구현하고, 이를 get_it에 등록하여 필요한 곳에서 액세스할 수 있었습니다. 이를 통해 앱이 오프라인 상태에서도 데이터를 유지하고 사용할 수 있게 되었습니다.