目次

コンパイル環境宣言によるアプリの構成

Dart アプリケーションをビルドまたは実行するときに、コンパイル環境宣言を指定できます。コンパイル環境宣言は、コンパイル時にアクセスおよび評価されるキーと値のペアとして構成オプションを指定します。

アプリは、環境宣言の値を使用して、その機能や動作を変更できます。Dart コンパイラは、環境宣言の値を使用した制御フローにより到達不能になったコードを排除できます。

環境宣言を定義して使用して、次のことを行うことができます。

  • ログの有効化など、デバッグ中に機能を追加する。
  • アプリケーションの異なるフレーバーを作成する。
  • HTTPサーバーのポートなど、アプリケーションの動作を構成する。
  • テストのためにアプリケーションの実験モードを有効にする。
  • テストと本番環境のバックエンドを切り替える。

Dart アプリケーションの実行またはコンパイル時に環境宣言を指定するには、--define オプションまたはその略語である -D を使用します。<NAME>=<VALUE> 形式を使用して、宣言のキーと値のペアを指定します。

$ dart run --define=DEBUG=true -DFLAVOR=free

他のツールでこれらの宣言を設定する方法については、このガイドの「環境宣言の指定」セクションをご覧ください。このセクションでは、宣言構文と、コマンドライン、IDE、エディターで指定する方法について説明します。

環境宣言へのアクセス

#

指定された環境宣言の値にアクセスするには、const を使用するか、定数コンテキスト内で fromEnvironment コンストラクターのいずれかを使用します。true または false の値には bool.fromEnvironment を、整数の値には int.fromEnvironment を、それ以外の値には String.fromEnvironment を使用します。

fromEnvironment コンストラクターはそれぞれ、環境宣言の名前またはキーを必要とします。また、デフォルトのフォールバック値をオーバーライドするオプションの defaultValue という名前の引数を受け入れます。デフォルトのフォールバック値は、宣言が定義されていない場合、または指定された値を予期される型として解析できない場合に使用されます。

たとえば、環境宣言 DEBUGtrue に設定されている場合にのみログメッセージを出力する場合は、次のようにします。

dart
void log(String message) {
  // Log the debug message if the environment declaration 'DEBUG' is `true`.
  // If there was no value specified, do not log.
  if (const bool.fromEnvironment('DEBUG', defaultValue: false)) {
    print('Debug: $message');
  }
}

このスニペットでは、コンパイル中に DEBUGfalse に設定されている場合、またはまったく指定されていない場合、本番コンパイラは条件とその本体を完全に削除できます。

fromEnvironment コンストラクターは、宣言が指定されていない場合、または指定された値を解析できない場合にデフォルト値にフォールバックします。したがって、環境宣言が指定されているかどうかを具体的に確認するには、bool.hasEnvironment コンストラクターを使用します。

dart
if (const bool.hasEnvironment('DEBUG')) {
  print('Debug behavior was configured!');
}

環境宣言の指定

#

Dart CLI

#

dart rundart compile サブコマンドは、環境宣言の値を指定するために、-D または --define オプションを任意の数受け入れます。

$ dart run --define=DEBUG=true -DFLAVOR=free main.dart
$ dart compile exe --define=DEBUG=true -DFLAVOR=free main.dart
$ dart compile js --define=DEBUG=true -DFLAVOR=free main.dart
$ dart compile aot-snapshot --define=DEBUG=true -DFLAVOR=free main.dart
$ dart compile jit-snapshot --define=DEBUG=true -DFLAVOR=free main.dart
$ dart compile kernel --define=DEBUG=true -DFLAVOR=free main.dart

webdev

#

開発用および本番用 Web コンパイラの両方に環境宣言を渡すように webdev を構成する方法については、webdev 構成ドキュメントを参照してください。

Visual Studio Code

#

configurations の下の起動構成 (launch.json) に、目的の環境宣言を含む新しい toolArgs キーを追加します。

json
"configurations": [
    {
        "name": "Dart",
        "request": "launch",
        "type": "dart",
        "toolArgs": [
          "--define=DEBUG=true"
        ]
    }
]

詳細については、VS Code の起動構成のドキュメントをご覧ください。

JetBrains IDE

#

プロジェクトの [実行/デバッグ構成] で、目的の環境宣言を [VMオプション] に追加します。

Adding define option to Jetbrains IDE

詳細については、JetBrains の Dart 実行/デバッグ構成のドキュメントを参照してください。

Flutter

#

Flutter ツールに環境宣言を指定するには、代わりに --dart-define オプションを使用します。

$ flutter run --dart-define=DEBUG=true