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日