
shared_preferencesを開発環境に追加してデータを保持してみる話
余談
これは個人的に開発のルーティンを保つための備忘メモですが、とりあえず席に座ったらまず開発環境を開いて一回デプロイすると気合が入っていいですね。
はじめに
さて、やっぱり画面的な変化があるとすごくモチベーションにつながるわけですが、ここからはしばらく裏側の処理を作る話なので、目に見える成果は少なそうです。。
とはいえ、やっていくしかないので、計画を立てたとおり、まずはFlutterがどんな具合に裏側でデータを保持するのかを確認したいなと思います。
ちなみに、前回までの記事で、状態管理を勉強しなきゃなと呟いていましたが、GPT先生曰く「Shared Preferencesで保持するデータを活用して状態管理を行う方法は一般的であり、特に小規模なアプリやシンプルなデータ保存に適しています。」だそうです。方向は間違ってなさそうなのでこのまま突き進みます。
Shared Preferencesを使ってみるぞ
パッケージのインストール
1.pubspec.yamlに依存関係を追加:
次回はデータ項目を確認する話。
dependencies:
shared_preferences: ^2.2.3
2.コマンドラインで以下のコマンドを実行
flutter pub get
3.main.dartの頭にこれを書く
import 'package:shared_preferences/shared_preferences.dart';
これだけで使えるようになった!らくちんだなあ。あとは、実際に目標日数を設定した時に、データとして保持されるか、それが他の画面にも反映されるか、みたいなことを確認。
詰まりポイントは、タブが切り替わる時にはメイン画面の値がしっかり更新されるのに、ハンバーガーメニューから戻る時には更新されなかった部分。
タブが切り替わる時には通常、ウィジェットツリー全体が再構築されるため、状態が更新されるが、ハンバーガーメニューから戻る時には、Flutterのナビゲーションメカニズムを使用している(画面を戻っているだけ)ため、画面が完全に再構築されないとのこと。
結局、ナビゲーションメカニズムに頼らずに(Navigator.popを使用せずに)、ページ遷移の形を取る(Navigator.pushReplacementを使用する)ことで強引に解決したが、それで良かったのだろうか・・・(なんかこういう時のために状態管理の仕組みがある気がするな・・・)
まあ一旦の今回の目的はあくまで「shared_preferencesを開発環境に追加してデータを保持してみる」ところまでなので、余裕でクリアですね。
次回は必要なデータ項目を洗い出して、その次からは具体の処理の部分のコーディングに入りたいと思います。
あ、shared_preferencesで保持してるデータの確認の仕方でも詰まったのでそこもどこかで書きたい。
いいなと思ったら応援しよう!
