当たり前すぎるから記事がないような気もしますが、kDebugMode
でQiitaを検索してもズバリな記事がヒットしなかったので書いておきます。
Flutterのデバッグモードでのみ実行され、リリースビルドでは実行されない(Tree shaking 最適化で削除される)コードを書く方法です。
方法1 kDebugMode を使う
import 'package:flutter/foundation.dart';
if (kDebugMode) {
// ここにデバッグ時のみ実行したいコードを書く
}
kDebugMode は foundation.dart で定義されている定数です。上記のコードスニペットどおりに書いた場合は、リリースビルド時にはTree shakingによってデバッグ用のコードが削除されます。
ただし、kDebugModeを別の変数に突っ込んだものをif文で評価したり、kDebugMode以外の条件式を加えてif文で評価すると、Tree shakingが効かなくなる場合があるので、注意が必要です。
方法2 assert を使う
flutter の SDK 内で主に使われている方法がこちら。assert
で常に true を返すような関数を書いてその場で実行するだけです。
assert(() {
// ここにデバッグ時のみ実行したいコードを書く
return true;
}());
機能的には kDebugMode を使った方法と変わりませんが、コードの foundation.dart への依存がなくなるのと、うっかりkDebugModeを使って複雑なif式を書いてしまいTree shakingが効かなかったー、みたいなミスを回避できる点がうれしいです。
おわりに
基本的に方法2を使うのが良いと思います。
万一レビューでassert
はこんな使い方するための機能じゃない!って言われた場合は、flutter SDK的にはこう書く流儀のようでして...と言えば円満に解決するかな...?