[App Inventor] 利用 TinyDB 儲存設定值,app 重開時立刻回復上次設定
之前用 App Inventor 寫了一個計算混合酒精濃度的 app,
這個 app 運作方式很簡單,輸入一開始的酒精濃度和容量,
再輸入想要稀釋的酒精濃度,就可以算出需要加多少水~
不過一直有個問題:當程式重開之後,這些都會回復預設值,不會記住原本設定好的值…
其實這個問題用 TinyDB 就可以解決了,TinyDB 可以在手機裡儲存 name=value 的組合,
因此像簡單的設定值是蠻適合使用 TinyDB 來儲存的~
1. 加入 TinyDB 元件
在 App Inventor 的 Designer 模式,選擇左側 Palette > Storage > TinyDB,拉到 app 裡面去:
2. 將設定值儲存至 TinyDB
我的 app 設計是按下「計算」鈕之後,會先檢查輸入值是否有效,再顯示計算後的值,
因此儲存設定的時間點很適合放在「按下計算鈕」之後,
因為這樣可以確保存下來的不是無效的設定值~
在 Block 模式,點下 TinyDB 元件後,選擇 StoreValue 的功能,
就可以將設定的值 (valueToStore) 儲存在某個名稱 (tag) 下面,
例如我將 TextBoxInDensity 的內容儲存致 InDensity 這個名稱下面,其他兩個設定值也是類似:
3. 從 TinyDB 中讀出設定值
什麼時候需要從 TinyDB 讀出設定值呢?這個依 app 而異,
以我這個 app 來說,只要在程式一開始的時候,讀出最後一次執行時,保留的設定值就可以了,
因此我可以在 Screen.Initialize 初始化時讀取設定值~
一樣是點選 TinyDB 元件,用 GetValue 方法取得跟特定名稱 (tag) 相關聯的設定值,
如果取不到的話,就會用 valueIfTagNotThere 的值,
所以下面就是如果取不到 InDensity 的設定值的話,就用預設的 95:
將 app 使用 TinyDB 改寫後,重開 app 也能保有上次執行設定好的值,
使用者不需要再重新輸入一次,算是個簡單又好用的元件喔~^^