SharedPreferences
SharedPreferences๋ Flutter์์ ์ฌ์ฉ๋๋ ๋ก์ปฌ ๋ฐ์ดํฐ ์ ์ฅ ํด๋์ค๋ก, ์ฑ์ ์๊ตฌ์ ์ธ ์ํ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ๋ก ์ฑ ์ค์ , ์ฌ์ฉ์ ํ๋กํ ์ ๋ณด, ํ ํฐ ๋ฑ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
โข
Android : XML ํ์ผ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
โข
iOS : plist ํ์ผ๋ก ์ ์ฅ
๋ฒ์(Scope): ์ฑ ๋ด์์ ๊ณต์ ๋๋ ํค-๊ฐ ์ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
shared_preferences ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ
dependencies (์์กด์ฑ) ์ ์ถ๊ฐํ๊ธฐ
pubspec.yaml
shared_preferences: ^2.2.2
YAML
๋ณต์ฌ
Flutter ๋ช ๋ น์ด๋ก ์ค์นํ๊ธฐ
flutter pub add shared_preferences
Bash
๋ณต์ฌ
shared_preferences import ํ๊ธฐ
shared_preferences
Dart
๋ณต์ฌ
shared_preferences ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช
|
getInstance() | SharedPreferencesย ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค. |
setString() | key์ย value๋ฅผ ์ ์ฅํฉ๋๋ค. |
getString() | key์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. |
setInt() | key์ย value๋ฅผ ์ ์ฅํฉ๋๋ค. |
getInt() | key์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. |
setDouble() | key์ย value๋ฅผ ์ ์ฅํฉ๋๋ค. |
getDouble() | key์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. |
setBool() | key์ย value๋ฅผ ์ ์ฅํฉ๋๋ค. |
getBool() | key์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. |
remove() | key์ ์ ์ฅ๋ ๊ฐ์ ์ญ์ ํฉ๋๋ค. |
clear() | ๋ชจ๋ ๊ฐ์ ์ญ์ ํฉ๋๋ค. |
์ธ์คํด์ค ๊ฐ์ ธ์ค๊ธฐ
// SharedPreferences ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
SharedPreferences prefs = await SharedPreferences.getInstance();
Dart
๋ณต์ฌ
setter ๋ฉ์๋๋ก ๊ฐ ์ ์ฅํ๊ธฐ
// `key`์ `value`๋ฅผ ์ ์ฅํฉ๋๋ค.
prefs.setString("key", "value");
Dart
๋ณต์ฌ
getter ๋ฉ์๋๋ก ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
// `key`์ ์ ์ฅ๋ ๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
String value = prefs.getString("key");
Dart
๋ณต์ฌ
shared_preferences ์นด์ดํธ ์ฑ ์นด์ดํธ ์ ์ฅํ๊ธฐ
main.dart
import 'package:flutter/material.dart';
import 'package:shared_data_app/file_app.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
// SharedPrefences ๊ณต์ ํ๊ฒฝ์ค์ ์ ๋ฐ์ดํฐ ์ ์ฅ ์์
runApp(const MyApp());
//
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home:
const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void initState() {
super.initState();
// ๊ณต์ ํ๊ฒฝ์ค์ ์ ์ ์ฅํด๋์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
_getData();
}
void _incrementCounter() {
setState(() {
_counter++;
// + ๋ฒํผ ํด๋ฆญ ์, ๋ณ๊ฒฝ๋ counter ๊ฐ ์ ์ฅ
_setData(_counter);
});
}
// SharedPrefeces ๋ฐ์ดํฐ ์ ์ฅํ๋ ํจ์
void _setData(int value) async {
var key = 'count';
SharedPreferences pref = await SharedPreferences.getInstance();
pref.setInt(key, value);
}
// SharedPrefeces ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๋ ํจ์
void _getData() async {
var key = 'count';
SharedPreferences pref = await SharedPreferences.getInstance();
setState(() {
var value = pref.getInt(key);
_counter = value ?? 0;
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
Dart
๋ณต์ฌ
pubspec.yaml
name: shared_data_app
description: A new Flutter project.
publish_to: none
version: 1.0.0+1
environment:
sdk: '>=3.2.3 <4.0.0'
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.2.2
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
uses-material-design: true
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
YAML
๋ณต์ฌ
์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์ฑ์ ์ข
๋ฃ์์ผฐ๋ค๊ฐ ๋ค์ ์ผ๋, ๊ทธ๋๋ก 5๋ก ๋จ์์๋ค.