使用編譯環境宣告配置應用程式
您可以在建置或執行 Dart 應用程式時指定編譯環境宣告。編譯環境宣告會將配置選項指定為鍵值對,這些鍵值對會在編譯時被存取和評估。
您的應用程式可以使用環境宣告的值來變更其功能或行為。Dart 編譯器可以使用環境宣告值,消除因控制流程而無法到達的程式碼。
您可能會定義和使用環境宣告來
- 在偵錯期間新增功能,例如啟用記錄。
- 建立應用程式的個別風味。
- 配置應用程式行為,例如 HTTP 伺服器的埠。
- 啟用應用程式的實驗模式以進行測試。
- 在測試和生產後端之間切換。
若要在執行或編譯 Dart 應用程式時指定環境宣告,請使用 --define
選項或其縮寫 -D
。使用 <NAME>=<VALUE>
格式指定宣告鍵值對
$ dart run --define=DEBUG=true -DFLAVOR=free
若要了解如何使用其他工具設定這些宣告,請查看本指南中的指定環境宣告章節。該章節說明宣告語法,以及如何在命令列和 IDE 和編輯器中指定它們。
存取環境宣告
#若要存取指定的環境宣告值,請將其中一個 fromEnvironment
建構子與 const
或在常數上下文中搭配使用。使用 bool.fromEnvironment
來表示 true
或 false
值,使用 int.fromEnvironment
來表示整數值,以及使用 String.fromEnvironment
來表示其他任何值。
每個 fromEnvironment
建構子都需要環境宣告的名稱或鍵。它們也接受一個可選的 defaultValue
具名引數,以覆寫預設的回退值。當未定義宣告或無法將指定的值剖析為預期的型別時,會使用預設的回退值。
例如,如果您只想在環境宣告 DEBUG
設定為 true
時列印記錄訊息
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');
}
}
在此程式碼片段中,如果 DEBUG
在編譯期間設定為 false
,或根本未指定,生產編譯器可以完全移除條件及其主體。
當未指定宣告或無法剖析指定的值時,fromEnvironment
建構子會回退為預設值。因此,若要特別檢查是否已指定環境宣告,請使用 bool.hasEnvironment
建構子
if (const bool.hasEnvironment('DEBUG')) {
print('Debug behavior was configured!');
}
指定環境宣告
#Dart CLI
#dart run
和 dart 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
#若要了解如何配置 webdev
以將環境宣告傳遞給開發和生產網路編譯器,請查看webdev
配置文件。
Visual Studio Code
#在您的啟動配置 (launch.json
) 的 configurations
下,新增一個包含您所需環境宣告的新 toolArgs
鍵
"configurations": [
{
"name": "Dart",
"request": "launch",
"type": "dart",
"toolArgs": [
"--define=DEBUG=true"
]
}
]
若要了解詳情,請查看 VS Code 啟動配置的文件。
JetBrains IDE
#在您專案的執行/偵錯配置中,將所需的環境宣告新增至VM 選項
若要了解詳情,請查看 JetBrains 的 Dart 執行/偵錯配置文件。
Flutter
#若要指定 Flutter 工具的環境宣告,請改用 --dart-define
選項
$ flutter run --dart-define=DEBUG=true
除非另有說明,否則本網站的文件反映 Dart 3.6.0。頁面上次更新於 2024-11-17。 檢視原始碼 或 回報問題。