首先导入SharedPreferences
在pubspec.yaml中的dev_dependencies导入,记得注意格式
shared_preferences: ^2.0.6
存数据
然后将需要传递的json数据用sharedpreference存储到本地
SharedPreferences prefs = await SharedPreferences.getInstance();
var jsonEn = jsonEncode(userCookie["profile"]);
prefs.setString("userInfo", jsonEn);
从代码中可以看到,由于SharedPreferences存储的是字符串类型,所以需要先将json数据通过jsonEncode转换成json字符串数据,再存储。
报错解决
我在这一步踩了个坑,之前我是直接将json数据通过toString方法处理然后就存储的,结果一直报错 FormatException: Unexpected character (at character 2)
这就是直接toString会导致json数据的格式丢失。
读数据
getUserInfo() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
// var encode = jsonEncode(prefs.getString("userInfo"));
userInfo = new Map<dynamic, dynamic>.from(jsonDecode(prefs.getString("userInfo")));
// print("-----"+userInfo[avatarUrl].toString()+"------------------------");
});
}
这样就完成了json数据的存储