🔄

【Flutter/Dart】retryパッケージでシンプルにリトライコードを書く

2024/11/20に公開

例外をキャッチした時に同じ処理をリトライしたい場合、retryパッケージが便利です。
サーバー側からの応答を受け取る系の処理にピッタリかも。
https://pub.dev/packages/retry

例えば、リトライを上記のパッケージ無しで実装するとこんな感じだけど、

const maxAttempts = 5;
const interval = Duration(milliseconds: 100);
int attempts = 0;
while(true) {
    attempts++;
    try{
        bool res = trySomething();
        if(res) break;
    }
    catch (e) {
        if(attempts >= maxAttempts) {
            break;
        }
        sleep(interval);
    }
}

Retryパッケージを使うとこんな感じに

const maxAttempts = 5;
const interval = Duration(milliseconds: 100);
retry(
    () {
      trySomething();
    },
    maxAttempts: maxAttempts,
    delayFactor: interval,
);

retryIf引数を使って、リトライする例外の種類を絞ることもできます。
シンプルで便利なパッケージです。

Discussion