Flutter でエラー時にアプリを強制終了する
どうも、たくチャレ(@takuchalle)です。
Flutter
でリリース環境でエラーが発生した時に、強制的にアプリを終了する方法を紹介します。
Flutter のエラーハンドリング
まず、Flutter
のエラーハンドリングについて解説します。
Flutter
ではエラーが発生した時にFlutterError.onError
ハンドラが呼ばれます。
デフォルトではFlutterError.dumpErrorToConsole
が割り当てられているので、IDE のコンソールにエラーが出力されます。
エラーの内容にもよりますが、アプリは画面が固まったり予期しないデータで動き続けてしまうことがあります。
リリース環境で予期しないデータで動き続けてデータベースを破壊などしたら目も当てられません。そこでアプリでエラーが発生した時に強制終了するのも一つの手かもしれません。
もちろん、致命的なエラーが起きないように例外などでちゃんとハンドリングすべきです。
FlutterError.onError
を上書きすることで、エラー時の挙動をカスタマイズすることができます。
リリース環境で強制終了する方法
kReleaseMode
定数でリリースモードかどうかを判別することができます。ちなみにデバッグモードはkDebugMode
定数で判別できます。
exit
関数でアプリを終了することができます。
これらを組み合わせると下記のようなコードになります。main
関数でrunApp
を呼ぶ前にFlutterError.onError
を上書きしてしまいましょう。
void main() {
FlutterError.onError = (FlutterErrorDetails details) {
FlutterError.dumpErrorToConsole(details);
if (kReleaseMode)
exit(1);
};
runApp(MyApp());
}
以上、Flutter
でリリース環境でエラーが発生した時に、強制的にアプリを終了する方法でした。
公式ドキュメント
Read other posts