Skip to content

Instantly share code, notes, and snippets.

@hongsw
Created May 10, 2023 03:47
Show Gist options
  • Save hongsw/f992564e36951120d67dc7f754ae8630 to your computer and use it in GitHub Desktop.
Save hongsw/f992564e36951120d67dc7f754ae8630 to your computer and use it in GitHub Desktop.
obsidian-kingdom-8183

obsidian-kingdom-8183

Created with <3 with dartpad.dev.

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