80日後に詰みそうなオッサン(49)Flutterで入力内容をすぐ画面に描画する方法

80日後に詰みそうなオッサン49日目。
今日はFlutterでTextfieldに入力された内容をすぐに反映する方法について。

[条件]

対象:FlutterでStatefulWidetとshared_prefernceを使っていること。
現象:アプリを複数起動し、別のアプリに切り替えると直前の入力内容が消失してしまう。

[やり方]

結論:保存用関数にsetState()の記述を追加する。
保存用の関数にsetState()の記述を追加することで、すぐに記入した内容が描画に反映されるようになりました。

変更後

  //データ保存用関数
  Future<void> save(key, text) async {
   final prefs2 = await SharedPreferences.getInstance();
   await prefs2.setString(key, text);
   setState(() {
     isLoaded = true;
   });
 }

変更前

//データ保存用関数  
Future<void> save(key, text) async {
   final prefs2 = await SharedPreferences.getInstance();
   await prefs2.setString(key, text);
 }


[おわりに]

終わってみればささいなことですが、成功するまではワケがわかりませんでした。
よっぽどteratailに質問しようかと思いましたが、なんとか自力で解決できたのがうれしかったです。
実践版GRIDを見て再度方針転換することにしました。

残り31日

いいなと思ったら応援しよう!