Created with <3 with dartpad.dev.
Created
May 10, 2023 03:47
-
-
Save hongsw/f992564e36951120d67dc7f754ae8630 to your computer and use it in GitHub Desktop.
obsidian-kingdom-8183
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:convert'; | |
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: Scaffold( | |
appBar: AppBar( | |
title: Text('SharedPreferences Demo'), | |
), | |
body: MyDataWidget(), | |
), | |
); | |
} | |
} | |
class MyDataWidget extends StatefulWidget { | |
@override | |
_MyDataWidgetState createState() => _MyDataWidgetState(); | |
} | |
class _MyDataWidgetState extends State<MyDataWidget> { | |
MyData? _data; | |
@override | |
void initState() { | |
super.initState(); | |
_loadData(); | |
} | |
Future<void> _loadData() async { | |
MyData? loadedData = await MyData.readInstance(); | |
if (loadedData != null) { | |
setState(() { | |
_data = loadedData; | |
}); | |
} | |
} | |
@override | |
Widget build(BuildContext context) { | |
return Center( | |
child: _data == null | |
? CircularProgressIndicator() | |
: Column( | |
mainAxisAlignment: MainAxisAlignment.center, | |
children: [ | |
Text('Name: ${_data!.name}'), | |
Text('Age: ${_data!.age}'), | |
], | |
), | |
); | |
} | |
} | |
// MyData 클래스는 이전 답변에서 제공한 것과 동일합니다. | |
class MyData { | |
String name; | |
int age; | |
MyData({required this.name, required this.age}); | |
String toJson() => json.encode({'name': name, 'age': age}); | |
factory MyData.fromJson(String str) { | |
final jsonData = json.decode(str); | |
return MyData(name: jsonData['name'], age: jsonData['age']); | |
} | |
static Future<MyData?> readInstance() async { | |
final prefs = await SharedPreferences.getInstance(); | |
final jsonString = prefs.getString('myData'); | |
if (jsonString == null) { | |
return null; | |
} | |
return MyData.fromJson(jsonString); | |
} | |
Future<void> saveInstance() async { | |
final prefs = await SharedPreferences.getInstance(); | |
prefs.setString('myData', toJson()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment