flutter中經常也會用到數據存儲,shared_preferences能夠很好的解決小數據存儲的問題 相當於在iOS中的NSUserDefaults,在Android原生中好像就叫SharedPreferences 關於怎么創建和初始化等一些基礎的我這里就不再贅述了,有需要了解的請參考:shared_preferences 具體使用我就直接上代碼了,這個是工程中一段用來存儲用戶登錄信息的存儲過程 包括保存、讀取、移除等
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);
}
}