Flutter

[Flutter]FutureBuilderの無限ビルドを防ぐ方法

どうもこんにちは。

先日FlutterでFutureBuilderを使っていたら無限にビルドが走るようになっていて困ったので、解決方法を記しておきます。

FutureBuilderの無限ビルドを防ぐ方法

AsyncMemoizerを使ったら解決できました。

手順としては以下の通り。

  • asyncパッケージを導入
  • AsyncMemoizerの変数を定義
  • FutureBuilderで使う関数の中身をrunOnceで囲う

asyncパッケージを導入

asyncより最新バージョンをpubspec.yamlへ記載

dependencies:
     async: ^any(お使いのバージョンに合わせてください)

pub getを忘れずに。

AsyncMemoizerの変数を定義

次は、FutureBuilderを一回だけ実行させる準備として変数を定義します。(asyncパッケージをimportしないとエラーが出ます)

final AsyncMemoizer memoizer= AsyncMemoizer();

FutureBuilderで使う関数の中身をrunOnceで囲う

最後はFutureBuilderで使う関数の中身をmemoizer.runonceで囲えば完了です。

Future<wwwww> xxxxxxx(){
  memoizer.runOnce(
      () async {
        ///実行させたい内容
      },
  );
}

これで無限ビルドが止まると思います。

というわけで、終わり。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です