一、shared_preferences简介
Flutter内部并没有本地存储的机制,官方推荐我们使用 shared_preferences
,这个插件 是 Flutter 提供的 本地数据存取 插件。
shared_preferences 在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ;
限制:
- 访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操作 ;
- 为简单数据封装平台特定的持久存储(iOS和macOS上的NSUserDefaults, Android上的SharedPreferences,等等)。
- 数据可能会异步持久化到磁盘,并且不能保证写入返回后会持久化到磁盘,所以这个插件不能用于存储关键数据。
二、添加使用
1. pubspec.yaml添加依赖
dependencies:
shared_preferences: 2.0.15 #本地存储插件
2. 文件中导入
import 'package:shared_preferences/shared_preferences.dart';
3. 支持的数据类型
int, double, bool, String , List。
4. 基本代码
- 写入数据
saveUserName(String name) async {
var user = await SharedPreferences.getInstance(); //初始化
user .setString("name", name);
}
user .setInt("age", 0);
user .setBool("sex", true);
user .setDouble("height", 10.1);
user .setStringList("address", <String>["", ""]);
- 读取数据
getUserName(BuildContext context) async {
var user = await SharedPreferences.getInstance(); //初始化
String? name = user .getString("name");
}
int? age = user .getInt("age");
bool? sex = user .getBool("sex");
double? height = user .getDouble("height");
List<String>? address = user .getStringList("address");
- 删除数据
删除一个数据
removeLogin() async {
var user= await SharedPreferences.getInstance(); //初始化
user.remove("name");
}
删除全部数据
user.clear();
- 获取所有key
var user = await SharedPreferences.getInstance();
var keys = user.getKeys();
- key是否存在
var user = await SharedPreferences.getInstance();
var result = user.containsKey("name");