Flutter로 시작하기: SharedPreferences 및 UserDefaults 작업
Android와 iOS는 작은 데이터를 영구 저장하는 방법이 다릅니다. Android에는 키-값 요소가 있는 앱 관리 XML 파일(또는 더 많은 파일)을 나타내는
SharedPreferences
클래스가 있으며 다른 애플리케이션에서 공유할 수도 있습니다. UserDefaults
는 간단한 데이터를 저장하는 iOS 방식으로, 캐시 기능이 있는 간단한 동기식 데이터베이스를 나타냅니다.Flutter에는 이러한 인터페이스에 액세스할 수 있는 기본 제공 방법이 없지만 Flutter 개발자가 직접 만든 플러그인이 지원됩니다(shared_preferences ). 이 간단한 플러그인을 사용하면 앱이 실행되는 플랫폼에 대해 걱정하지 않고 SharedPreferences 및 UserDefaults를 사용할 수 있습니다! 사용 방법을 더 잘 알기 위해 간단한 예를 봅시다!
여기에는 텍스트 상자, 2개의 버튼 및 텍스트가 있는 간단한 앱이 있습니다. 버튼으로 입력을 저장하고 다른 버튼으로 표시하려고 합니다.
final textController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.red,
title: Text('Some Awesome Flutter App'),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: 300,
child: TextField(
controller: textController,
decoration: InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.black, width: 1.0),
),
hintText: 'Enter some data'
),
),
),
RaisedButton(
child: Text('Save', style: TextStyle(color: Colors.white)),
onPressed: null
),
RaisedButton(
child: Text('Show', style: TextStyle(color: Colors.white)),
onPressed: null
),
Text(
''
)
],
)
)
);
}
onPressed 메서드를 채워서 '저장' 버튼에 몇 가지 작업을 지정해 보겠습니다.
RaisedButton(
child: Text('Save', style: TextStyle(color: Colors.white)),
onPressed: () => saveText()
),
void saveText(){
String text = textController.text;
//Here we'll save our text
}
이제 saveText 메서드를 shared_preferences 메서드로 채울 수 있습니다.
먼저 클래스를 인스턴스화한 다음 비동기 메서드인 setString으로 데이터를 쓸 때까지 기다려야 합니다. SharedPreference 개체에는 데이터 유형에 따라
setInt
, setBool
... 심지어 setStringList와 같이 다양한 방법이 있습니다. 또한 데이터가 올바르게 저장되었는지 인쇄하고 싶습니다. 모든 "설정"메서드는 Future를 반환하므로 모든 것이 잘 되었는지 알 수 있습니다. 텍스트를 키 "OurText"로 지정해 봅시다.코드는 다음과 같습니다.
RaisedButton(
child: Text('Save', style: TextStyle(color: Colors.white)),
onPressed:() async {
print(await saveText());
},
),
Future<bool> saveText() async{
String text = textController.text;
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setString('OurText', text);
}
TextField에 무언가를 쓴 다음 "저장"을 클릭하면 다음과 같은 결과가 나타납니다.
[+12369 ms] I/flutter ( 9987): true
이제 텍스트를 보여줘야 합니다. '표시' 버튼 작업 시간:
저장과 마찬가지로 SharedPreferences를 인스턴스화한 다음... getString(박수...)을 사용하여 문자열을 가져옵니다. SharedPreferences.getInstance()는 미래이므로 비동기 메서드에서 문자열을 가져와야 합니다.
String ourText = '';
RaisedButton(
child: Text('Show', style: TextStyle(color: Colors.black)),
onPressed: () async {
ourText = await getText();
setState(() {
});
},
),
Text(
ourText
)
Future<String> getText() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('OurText');
}
그리고 우리는:
이제 텍스트가 SharedPreferences 및 UserDefaults에 저장되므로 앱을 종료하더라도 기록하지 않고 표시할 수 있습니다.
Reference
이 문제에 관하여(Flutter로 시작하기: SharedPreferences 및 UserDefaults 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theotherdevs/starting-with-flutter-working-with-sharedpreferences-userdefaults-5dia텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)