如果我有 Dart 程序:
import 'dart:io';
void main() {
final keyEnv = Platform.environment['KEY'];
const keyString = String.fromEnvironment('KEY');
print('keyEnv: $keyEnv');
print('keyString: $keyString');
}
然后像这样运行它:
dart run --define=KEY=hello bin/main.dart
这是结果:
keyEnv: null
keyString: hello
为什么
KEY
变量无法从 Platform.environment
获得?我可以做什么来访问它?我正在使用 Dart 3.3.0 的 Mac 上进行测试。
Platform.environment
用于读取system的环境变量。它们是其他编程语言通常所说的环境变量。
例如,在
bash
(或 POSIX 系统的许多其他 shell)中,您通常会这样做:
$ KEY=hello dart bin/main.dart
或
$ export KEY=hello
$ dart bin/main.dart
在 Windows 上,你会这样做:
> set KEY=hello
> dart bin/main.dart
这与
String.fromEnvironment
、bool.fromEnvironment
等读取的“编译配置环境”不同。注意文档:
编译配置环境由编译或运行Dart程序的周边工具提供。
...
编译配置环境与POSIX进程的环境变量不一样。可以使用
库中的Platform.environment
在本机平台上访问这些内容。dart:io