标签:json encode const model factory manager package pack tor
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);
}
}
标签:json encode const model factory manager package pack tor
原文地址:https://www.cnblogs.com/qqcc1388/p/12372018.html