Flutter 애플리케이션에서 간단한 데이터를 영구적으로 저장하기 위해 SharedPreferences를 사용할 수 있습니다. SharedPreferences는 키-값 쌍을 사용하여 데이터를 저장하는 경량의 로컬 저장소로, 사용자 설정, 상태 정보 등을 저장하는 데 유용합니다. 이번 글에서는 Flutter에서 SharedPreferences를 사용하는 방법과 이를 구현하는 예제를 자세히 살펴보겠습니다.
1. SharedPreferences 패키지 설치
Flutter 애플리케이션에서 SharedPreferences를 사용하기 위해 shared_preferences 패키지를 설치합니다. pubspec.yaml 파일에 다음 의존성을 추가합니다.
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.0.6
그리고 pub get 명령어를 실행하여 패키지를 설치합니다.
2. SharedPreferences 초기화 및 데이터 저장
SharedPreferences를 사용하려면 인스턴스를 얻고 데이터를 저장하는 메서드를 호출해야 합니다. 다음은 SharedPreferences를 초기화하고 데이터를 저장하는 예제입니다.
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SharedPreferencesExample(),
);
}
}
class SharedPreferencesExample extends StatefulWidget {
@override
_SharedPreferencesExampleState createState() => _SharedPreferencesExampleState();
}
class _SharedPreferencesExampleState extends State<SharedPreferencesExample> {
TextEditingController _controller = TextEditingController();
String _savedValue = '';
@override
void initState() {
super.initState();
_loadSavedValue();
}
Future<void> _loadSavedValue() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_savedValue = prefs.getString('saved_value') ?? '';
});
}
Future<void> _saveValue(String value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('saved_value', value);
setState(() {
_savedValue = value;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SharedPreferences Example'),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
TextField(
controller: _controller,
decoration: InputDecoration(labelText: 'Enter value to save'),
onSubmitted: (value) {
_saveValue(value);
_controller.clear();
},
),
SizedBox(height: 20),
Text('Saved value: $_savedValue'),
],
),
),
);
}
}
위 코드는 사용자가 입력한 값을 SharedPreferences에 저장하고, 저장된 값을 로드하여 화면에 표시하는 예제입니다. SharedPreferences.getInstance() 메서드를 사용하여 SharedPreferences 인스턴스를 얻고, setString 및 getString 메서드를 사용하여 데이터를 저장하고 로드합니다.
3. 데이터 저장
SharedPreferences에 데이터를 저장하려면 setString, setInt, setBool, setDouble, setStringList 등의 메서드를 사용할 수 있습니다. 위 예제에서는 setString 메서드를 사용하여 문자열 데이터를 저장합니다.
Future<void> _saveValue(String value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('saved_value', value);
setState(() {
_savedValue = value;
});
}
4. 데이터 로드
SharedPreferences에서 데이터를 로드하려면 getString, getInt, getBool, getDouble, getStringList 등의 메서드를 사용할 수 있습니다. 위 예제에서는 getString 메서드를 사용하여 문자열 데이터를 로드합니다.
Future<void> _loadSavedValue() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_savedValue = prefs.getString('saved_value') ?? '';
});
}
5. 데이터 삭제
SharedPreferences에서 데이터를 삭제하려면 remove 메서드를 사용할 수 있습니다. 다음은 저장된 데이터를 삭제하는 예제입니다.
Future<void> _removeValue() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove('saved_value');
setState(() {
_savedValue = '';
});
}
위 코드는 remove 메서드를 사용하여 특정 키에 해당하는 데이터를 삭제합니다.
6. 데이터 저장 유형
SharedPreferences는 다양한 데이터 유형을 저장할 수 있습니다. 다음은 각 데이터 유형에 대한 예제입니다.
Future<void> _savePreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('string_key', 'Hello, World!');
prefs.setInt('int_key', 42);
prefs.setBool('bool_key', true);
prefs.setDouble('double_key', 3.14);
prefs.setStringList('list_key', ['Flutter', 'Dart']);
}
Future<void> _loadPreferences() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String stringValue = prefs.getString('string_key') ?? '';
int intValue = prefs.getInt('int_key') ?? 0;
bool boolValue = prefs.getBool('bool_key') ?? false;
double doubleValue = prefs.getDouble('double_key') ?? 0.0;
List<String> listValue = prefs.getStringList('list_key') ?? [];
print('String: $stringValue');
print('Int: $intValue');
print('Bool: $boolValue');
print('Double: $doubleValue');
print('List: $listValue');
}
위 코드는 문자열, 정수, 불리언, 실수, 문자열 리스트를 SharedPreferences에 저장하고 로드하는 예제입니다.
결론
Flutter 애플리케이션에서 SharedPreferences를 사용하면 간단한 데이터를 영구적으로 저장하고 관리할 수 있습니다. SharedPreferences는 키-값 쌍을 사용하여 데이터를 저장하는 경량의 로컬 저장소로, 사용자 설정, 상태 정보 등을 저장하는 데 유용합니다. 이번 글에서 소개한 방법들을 활용하여 Flutter 애플리케이션에서 SharedPreferences를 효율적으로 사용해보세요. SharedPreferences를 통해 애플리케이션의 기능을 확장하고, 사용자 경험을 향상시킬 수 있습니다.
'Flutter' 카테고리의 다른 글
Flutter의 이미지 피커(Image Picker) 사용법 (0) | 2024.09.29 |
---|---|
Flutter의 파일 입출력(File I/O) 사용법 (1) | 2024.09.29 |
Flutter의 Hive 사용법 (32) | 2024.08.07 |
Flutter의 Moor 사용법 (1) | 2024.08.07 |
Flutter의 SQLite 사용법 (0) | 2024.08.06 |