shared_preferences本地存储
大约 2 分钟
shared_preferences本地存储
地址
引入依赖
dependencies:
shared_preferences: ^2.0.15
在pubspec.yaml中配置保存后,在VS Code环境中会自动下载依赖包。 如果无法正常下载,执行 flutter pub get 。
引入库
在需要用到的该插件的文件中引入插件包。
import 'package:shared_preferences/shared_preferences.dart';
封装存储组件
// lib/pages/common/Storage.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);//写入String类型
// 注意:如果要写入其他类型的数据,设置方法如下
// sp.setBool(key, value);//写入bool类型
// sp.setDouble(key, value);//写入Double类型
// sp.setInt(key, value);//写入Int类型
// sp.setStringList(key, value);//写入StringList类型
}
// 读取数据的方法
static Future<String?> getString(key) async{
SharedPreferences sp = await SharedPreferences.getInstance();
return sp.getString(key);//读取String类型
// 注意:如果要读取其他类型的数据,设置方法如下
// sp.getBool(key, value);//读取bool类型
// sp.getDouble(key, value);//读取Double类型
// sp.getInt(key, value);//读取Int类型
// sp.getStringList(key, value);//读取StringList类型
}
// 移除数据的方法
static Future<void> remove(key) async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.remove(key);
}
// 移除所有的键值对
static Future<void> clearAll() async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.clear();
}
}
使用存储组件
import 'package:flutter/material.dart';
// 引入封装的数据请求方法
import '../common/Storage.dart';
class StoragePage extends StatefulWidget {
StoragePage({Key key}) : super(key: key);
@override
_StoragePageState createState() => _StoragePageState();
}
class _StoragePageState extends State<StoragePage> {
String _username;
// 读取数据
getData() async{
String username = await Storage.getString("username");
setState(() {
this._username=username;
});
}
// 写入数据
setData() async{
await Storage.setString("username", "张三");
}
// 移除数据
removeData() async{
await Storage.removeString("username");
setState(() {
this._username=null;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("本地存储"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
RaisedButton(
child: Text('设置数据'),
onPressed: setData,
),
SizedBox(height: 10),
RaisedButton(
child: Text('获取数据'),
onPressed:getData,
),
SizedBox(height: 10),
RaisedButton(
child: Text('清除数据'),
onPressed:removeData,
),
SizedBox(height: 10),
RaisedButton(
child: this._username != null?Text(_username):Text("无名姓"),
onPressed: (){
},
),
]
),
),
);
}
}
结果
