對於大部分安卓或者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文檔。
研究中,未完待續~