bool.fromEnvironment 总是返回 false

Dan*_*yar 4 dart flutter

这是一个代码:

const bool a = const bool.fromEnvironment("true");
print(a); // false
Run Code Online (Sandbox Code Playgroud)

是的,默认值为 false。a在不使用默认值的情况下我应该怎么做?那么字符串参数是什么?也许是一把钥匙?

lrn*_*lrn 6

你想达到什么目的?设置a为 true 可以如下完成const a = true;

bool.fromEnvironment函数允许您查找定义的命名字符串属性,这些属性可以在编译时在命令行添加,或者可以由您正在编译/运行的平台定义。String.fromEnvironment和也是如此int.fromEnvironment

为平台支持的每个库dart.library.*设置一组此类平台属性。truedart:*

因此,要打印 以外的内容false,您可以执行以下操作:

print(const bool.fromEnvironment("dart.library.core"));
Run Code Online (Sandbox Code Playgroud)

这很无聊,因为所有平台都支持dart:core. 您可以检查其他库的可用性:

const bool supportsMirrors = bool.fromEnvironment("dart.library.mirrors");
const bool isJavaScript = bool.fromEnvironment("dart.library.js");
Run Code Online (Sandbox Code Playgroud)

或者,您可以在编译时在命令行上提供一个值。我们以dart单机虚拟机为例。编写以下脚本script.dart

void main() {
  print(const bool.fromEnvironment("my-fancy-thing"));
}
Run Code Online (Sandbox Code Playgroud)

如果您在dart script.dart打印时运行它false。如果您在dart -Dmy-fancy-thing=true script.dart打印时运行它true