どうもこんにちは。
先日FlutterでFutureBuilderを使っていたら無限にビルドが走るようになっていて困ったので、解決方法を記しておきます。
スポンサーリンク
FutureBuilderの無限ビルドを防ぐ方法
AsyncMemoizerを使ったら解決できました。
手順としては以下の通り。
- asyncパッケージを導入
- AsyncMemoizerの変数を定義
- FutureBuilderで使う関数の中身をrunOnceで囲う
asyncパッケージを導入
asyncより最新バージョンをpubspec.yamlへ記載
dependencies: async: ^any(お使いのバージョンに合わせてください)
pub getを忘れずに。
AsyncMemoizerの変数を定義
次は、FutureBuilderを一回だけ実行させる準備として変数を定義します。(asyncパッケージをimportしないとエラーが出ます)
final AsyncMemoizermemoizer= AsyncMemoizer ();
FutureBuilderで使う関数の中身をrunOnceで囲う
最後はFutureBuilderで使う関数の中身をmemoizer.runonceで囲えば完了です。
Future<wwwww> xxxxxxx(){ memoizer.runOnce( () async { ///実行させたい内容 }, ); }
これで無限ビルドが止まると思います。
というわけで、終わり。
スポンサーリンク
スポンサーリンク