码迷,mamicode.com
首页 > 其他好文 > 详细

flutter SharedPreferences数据存储

时间:2020-02-27 14:40:29      阅读:485      评论:0      收藏:0      [点我收藏+]

标签: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);
  }
}

flutter SharedPreferences数据存储

标签:json   encode   const   model   factory   manager   package   pack   tor   

原文地址:https://www.cnblogs.com/qqcc1388/p/12372018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!