对于大部分安卓或者IOS开发人员来讲,App的数据持久化多是很日常的一个话题。可是对于Web开发人员来讲,可能牢牢意味着localStorage和sessionStorage。html
localStorage和sessionStorage是类似而又不一样的,两者的API接口是极其相似甚至相同。简单地说一下两者的异同点:vue
以上为我在开发Web时用到的知识储备,甚至在我以vue为技术栈开发WebApp时,也使用localStorage做为了数据持久化的技术依赖。web
虽然 Web Storage(localStorage和sessionStorage)对于存储较少许的数据颇有用,但对于存储更大量的结构化数据来讲,这种方法不太有用。IndexedDB提供了一个解决方案。IndexedDB是在浏览器中保存结构化数据的一种数据库,为了替换WebSQL(标准已废弃,但被普遍支持)而出现。IndexedDB使用NoSQL的形式来操做数据库,保存和读取是JavaScript对象,同时还支持查询及搜索。
这个Web数据库在我日常的Web开发中并未大量使用,具体的细节和API能够查看IndexedDB-MDN文档。sql
在通常移动应用开发中,数据存储基本上都是以文件、数据库等方式的存在。好比相似sqlite的数据库,固然Flutter没有提供直接操做数据库的API,可是有第三方的插件能够用,好比sqflite。另外,在简单数据的存储上,咱们能够采用shared_preferences这个库进行存储。数据库
shared_preferences包含NSUserDefaults(在iOS上)和SharedPreferences(在Android上),为存储简单数据提供方案。shared_preferences使用异步方式将数据保存到磁盘。但两个方法都不能保证在返回后写入将持久保存到磁盘,而且这个库尽可能不要用于存储关键数据。浏览器
其实shared_preferences和Web开发中的localStorage在使用方法上时是十分类似的。服务器
在在pubspec.yaml文件中,加入以下配置:
session
由于我使用的是配置好的Vscord编辑器,当pubspec.yaml文件增长配置时,文件会自动执行flutter packages get指令。若是其余编辑器未执行,可自行手动执行。异步
在须要执行的文件中引入这个库:async
import 'package:shared_preferences/shared_preferences.dart';
main() async { // 构建sp类 SharedPreferences sp = await SharedPreferences.getInstance(); // 存储 sp.setString("name", "lee"); sp.setInt("age", 24); // 读取 sp.getString("name");// "lee" sp.getInt("age");// 24 sp.get("name");// "lee" //清除 sp.clear() sp.remove("name") }
具体API接口可查看shared_preferences的API文档。
研究中,未完待续~