int.fromEnvironment 构造函数

const int.fromEnvironment(
  1. String name, {
  2. int defaultValue = 0,
})

编译配置环境中的 name 的整数值。

编译配置环境由编译或运行 Dart 程序的周围工具提供。该环境是一组字符串键到其相关字符串值的映射。与 name 相关的字符串值或值的缺失必须在单个程序中对 String.fromEnvironmentint.fromEnvironmentbool.fromEnvironmentbool.hasEnvironment 的所有调用中保持一致。可以使用 String.fromEnvironment 直接访问字符串值。

此构造函数查找与 name 相关的字符串值,然后尝试将其解析为整数,使用与 int.parse/int.tryParse 相同的语法规则。也就是说,它接受带有 0x 前缀的十进制数字和十六进制数字,并且接受前导负号。如果在编译配置环境中没有与 name 相关的值,或者相关的字符串值无法解析为整数,则构造函数调用的值是 defaultValue 整数,默认为零。

结果是与以下内容相同

int.tryParse(const String.fromEnvironment(name, defaultValue: ""))
    ?? defaultValue

除了构造函数调用可以是常量值之外。

示例

const defaultPort = int.fromEnvironment("defaultPort", defaultValue: 80);

为了检查是否存在值,请使用 bool.hasEnvironment。示例

const int? maybeDeclared = bool.hasEnvironment("defaultPort")
    ? int.fromEnvironment("defaultPort")
    : null;

name 相关的字符串值或值的缺失必须在单个程序中对 String.fromEnvironmentint.fromEnvironmentbool.fromEnvironmentbool.hasEnvironment 的所有调用中保持一致。

此构造函数仅在作为 const 调用时才有保证能正常工作。在某些平台(这些平台在运行时可以访问编译器选项)上,它可能作为非常量调用工作,但大多数提前编译的平台将没有此信息。

实现

external const factory int.fromEnvironment(String name,
    {int defaultValue = 0});