Flutter本地存储

一、shared_preferences简介

Flutter内部并没有本地存储的机制,官方推荐我们使用 shared_preferences,这个插件 是 Flutter 提供的 本地数据存取 插件。
shared_preferences 在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ;

限制:

  1. 访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操作 ;
  2. 为简单数据封装平台特定的持久存储(iOS和macOS上的NSUserDefaults, Android上的SharedPreferences,等等)。
  3. 数据可能会异步持久化到磁盘,并且不能保证写入返回后会持久化到磁盘,所以这个插件不能用于存储关键数据。

二、添加使用

1. pubspec.yaml添加依赖

dependencies:
shared_preferences: 2.0.15 #本地存储插件

2. 文件中导入

import 'package:shared_preferences/shared_preferences.dart';

3. 支持的数据类型

int, double, bool, String , List。

4. 基本代码

  1. 写入数据
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>["", ""]);
  1. 读取数据
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"); 
  1. 删除数据
    删除一个数据
removeLogin() async {
    var user= await SharedPreferences.getInstance(); //初始化
    user.remove("name");
}

删除全部数据

user.clear();
  1. 获取所有key
var user = await SharedPreferences.getInstance();
var keys = user.getKeys();
  1. key是否存在
var user = await SharedPreferences.getInstance();
var result = user.containsKey("name"); 

猜你喜欢

转载自blog.csdn.net/guoxulieying/article/details/131516631