앱 개발에서 데이터 저장소는 매우 중요한 역할을 합니다. 로컬 데이터 저장소를 사용하면 앱이 오프라인 상태에서도 데이터를 유지하고 사용할 수 있습니다. 이번 기술 블로그에서는 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
에 등록하여 필요한 곳에서 액세스할 수 있었습니다. 이를 통해 앱이 오프라인 상태에서도 데이터를 유지하고 사용할 수 있게 되었습니다.