flutter实现本地存储
实现本地存储用到的插件是shared_preferences
shared_preferences地址为:https://pub.dev/packages/shared_preferences
import 'package:flutter/material.dart';
import 'package:flutterappone/GetInformation.dart';
import 'package:shared_preferences/shared_preferences.dart';
class StoragePage extends StatefulWidget {
StoragePage({
Key? key}) : super(key: key);
@override
State<StoragePage> createState() => _StoragePageState();
}
class _StoragePageState extends State<StoragePage> {
//写入数据
_saveData() async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.setString("username", "张三");
}
//获取数据
_getData() async {
SharedPreferences sp = await SharedPreferences.getInstance();
String? s = sp.getString("username");
print(s);
}
//删除数据
_removeData() async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.remove("username");
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("本地存储"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(onPressed: _saveData, child: Text('保存数据')),
SizedBox(height: 10),
ElevatedButton(onPressed: _getData, child: Text('获取数据')),
SizedBox(height: 10),
ElevatedButton(onPressed: _removeData, child: Text('清除数据')),
SizedBox(height: 10),
ElevatedButton(
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (BuildContext context) {
return InformationPage();
}));
},
child: Text('页面转跳')),
],
),
),
);
}
}
在另一个页面获取存储的数据
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class InformationPage extends StatefulWidget {
InformationPage({
Key? key}) : super(key: key);
@override
State<InformationPage> createState() => _InformationPageState();
}
class _InformationPageState extends State<InformationPage> {
String s = "";
_getData() async {
SharedPreferences sp = await SharedPreferences.getInstance();
s = sp.getString("username")!;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("获取本地数据"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(onPressed: _getData, child: Text("获取数据")),
Text(s),
],
),
)
);
}
}
可以对数据相关操作进行封装
使用时直接通过 类.方法进行调用
import 'package:flutter/cupertino.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Storage {
static Future<void> setString(key, value) async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.setString(key, value);
}
static Future<String?> getString(Key) async {
SharedPreferences sp = await SharedPreferences.getInstance();
return sp.getString(Key);
}
}
_saveData() async {
await Storage.setString("username", "张三");
}
_getData() async {
String? s = await Storage.getString('username');
print(s);
}