15
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutterでデバッグ時のみ実行される処理を書く

Last updated at Posted at 2021-07-07

当たり前すぎるから記事がないような気もしますが、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的にはこう書く流儀のようでして...と言えば円満に解決するかな...?

15
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?