앱을 재시작하거나 종료할 때 데이터가 날아가는 이유는 데이터가 RAM(Random Access Memory)이라는 휘발성 메모리에 저장되어있기 때문입니다. 데이터를 RAM이 아닌 다른 곳에 저장해 앱을 재시작해도 이전 데이터를 유지하는 방법을 알아보겠습니다.
여기선 shared_preferences 패키지를 이용하여 1. 기기에 파일로 저장 방법을 배워보도록 하겠습니다.
먼저, pubspec.yaml 파일에 shared_preferences 패키지를 추가해야 합니다. 아래와 같이 종속성 섹션에 패키지를 추가합니다.
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.8
그리고 패키지를 가져오기 위해 flutter pub get 명령을 실행하여 패키지를 다운로드합니다.
shared_preferences 패키지를 사용하기 위해 SharedPreferences 인스턴스를 생성해야 합니다. 일반적으로 앱 초기화 단계에서 인스턴스를 생성하는 것이 좋습니다.
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
// 이후 작업을 수행합니다.
}
SharedPreferences.getInstance() 메서드를 호출하여 인스턴스를 얻을 수 있습니다. 이때 await 키워드를 사용하여 비동기로 처리합니다.
이제 SharedPreferences 인스턴스를 사용하여 데이터를 저장하고 검색할 수 있습니다. 일반적으로 문자열, 정수, 부울 등 다양한 유형의 데이터를 저장할 수 있습니다.
// 데이터 저장하기
prefs.setString('key', 'value');
prefs.setInt('count', 10);
prefs.setBool('isLogged', true);
// 데이터 검색하기
String? value = prefs.getString('key');
int? count = prefs.getInt('count');
bool? isLogged = prefs.getBool('isLogged');
위의 예시에서는 setString(), setInt(), setBool() 메서드를 사용하여 데이터를 저장하고, getString(), getInt(), getBool() 메서드를 사용하여 데이터를 검색합니다. 특정 키에 대한 데이터를 얻을 때는 해당 메서드를 사용하면 됩니다. 반환값은 해당 유형에 맞게 자동으로 캐스팅됩니다.
저장된 데이터를 제거할 때는 remove() 메서드를 사용합니다.
prefs.remove('key');
위의 예시에서는 'key'라는 키에 해당하는 데이터를 제거합니다.
저장된 데이터를 확인하기 위해서는 SharedPreferences 인스턴스의 getKeys() 메서드를 사용하여 키 목록을 얻을 수 있습니다.
Set<String> keys = prefs.getKeys();
print(keys);
위의 예시에서는 저장된 모든 키를 출력합니다.
shared_preferences 패키지를 사용하면 간단하게 Flutter 앱에서 영구 데이터를 저장하고 검색할 수 있습니다. 사용자 설정, 앱 설정, 작은 데이터 등을 저장하기에 적합한 방법입니다. 이를 활용하여 앱의 사용자 경험을 향상시킬 수 있습니다.