bool.fromEnvironment始终返回false

时间:2019-07-10 10:19:17

标签: flutter dart

这是一个代码:

const bool a = const bool.fromEnvironment("true");
print(a); // false

是,默认情况下默认值为false。在不使用默认值的情况下,a为真该怎么办?字符串参数是什么?也许是钥匙吗?

1 个答案:

答案 0 :(得分:1)

您要达到什么目标? 可以将a设置为const a = true;

通过bool.fromEnvironment函数,您可以查找已定义的命名字符串属性,这些属性可以在编译时在命令行中添加,也可以由您在其中编译/运行的平台定义。 String.fromEnvironmentint.fromEnvironment也是如此。

一组这样的平台属性是dart.library.*,对于平台支持的每个true库,这些属性都设置为dart:*

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

print(const bool.fromEnvironment("dart.library.core"));

由于所有平台都支持dart:core,所以这很无聊。 您可以按以下方式检查其他库的可用性:

const bool supportsMirrors = bool.fromEnvironment("dart.library.mirrors");
const bool isJavaScript = bool.fromEnvironment("dart.library.js");

或者,您可以在编译时在命令行上提供一个值。让我们以dart独立VM为例。编写以下脚本script.dart

void main() {
  print(const bool.fromEnvironment("my-fancy-thing"));
}

如果您以dart script.dart的身份运行,则会显示false。 如果您以dart -Dmy-fancy-thing=true script.dart的身份运行,则会显示true