flutter SharedPreferences数据存储
Posted qqcc1388
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter SharedPreferences数据存储相关的知识,希望对你有一定的参考价值。
flutter中经常也会用到数据存储,SharedPreferences能够很好的解决小数据存储的问题 相当于在ios中的NSUserDefaults 具体使用我就直接上代码了,这个是工程中一段用来存储用户登录信息的存储过程 包括保存、读取、移除等
import 'dart:convert';
import 'package:flutte_xms/model/usermodel.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'const.dart';
class UserManager {
// 工厂模式
factory UserManager() =>_getShared();
static UserManager get shared => _getShared();
static UserManager _shared;
UserManager._internal() {
// 初始化
}
static UserManager _getShared() {
if (_shared == null) {
_shared = UserManager._internal();
}
return _shared;
}
UserInfo _userInfo;
//用户信息
get userInfo => _userInfo;
//用户登陆状态
get isLogin => (_userInfo == null) ? false : true;
//获取用户数据
Future readUserInfo() async {
SharedPreferences pref = await SharedPreferences.getInstance();
final jsonStr = pref.getString(DataConst.KEY_UserInfo);
// print(jsonStr);
if (jsonStr != null && jsonStr.length > 0) {
Map json = jsonDecode(jsonStr);
final model = UserInfo.fromJson(json);
//保存model的值
_userInfo = model;
return model;
}
return null;
}
//保存用户数据
void saveUserInfo(UserInfo data) async {
//替换userInfo的数据
_userInfo = data;
//保存userInfo
SharedPreferences pref= await SharedPreferences.getInstance();
//将data转换成json
var str = json.encode(data);
pref.setString(DataConst.KEY_UserInfo, str);
}
//移除用户数据
void removeUserInfo() async{
//清空userInfo
_userInfo = null;
//移除已存数据
SharedPreferences pref= await SharedPreferences.getInstance();
pref.remove(DataConst.KEY_UserInfo);
}
}
以上是关于flutter SharedPreferences数据存储的主要内容,如果未能解决你的问题,请参考以下文章
Flutter + SharedPreferences:如何使用 FutureBuilder
如何在 Flutter 中使用 SharedPreferences 和 Injectable?
Flutter 将 JSON 数组保存到 SharedPreferences
flutter: SharedPreferences桌面插件