【问题标题】:Flutter: make build-time environment variables available to codeFlutter:使构建时环境变量可用于代码
【发布时间】:2020-05-19 04:48:36
【问题描述】:

如何让构建时环境变量可用于 Flutter 应用程序中的代码? (我的具体用例是将应用版本号和提交哈希注入调试屏幕。此信息在构建时可用,但在运行时不可用)。

我曾希望能够做类似的事情:

flutter run --dart-define=APP_VERSION=0.1.2

然后,

const appVersion = String.fromEnvironment('APP_VERSION', defaultValue: 'development');

但这似乎不起作用(我使用的是 Flutter 1.12.13+hotfix.5),我不确定这是 Flutter 中支持的功能。

【问题讨论】:

    标签: flutter environment-variables compile-time


    【解决方案1】:

    您可以使用flavors 执行不同的main.dart 并在这些文件中设置您的值。但是如果您在构建应用时需要更改内部版本号,可以使用--build-number 标志。

    【讨论】:

    • 好吧,为每个版本号或您可能想要使用的提交哈希设置不同的main.dart 是不可行的。我将调查 --build-name / --build-number 的版本控制,但不清楚如何从代码中访问它们,它们也不能帮助获取源中可用的其他值(如提交哈希)。
    【解决方案2】:

    从 1.17 版开始,您实际上可以做到这一点。最近 beta 和 dev 频道进行了更改,允许您定义编译时变量。你也可以像这样定义多个变量

    flutter run --dart-define=APP_VERSION=0.1.2 --dart-define=SOME_OTHER_VAR=SOME_OTHER_VALYE

    此外,这些更改似乎是精心挑选的,因此我们很可能会在即将发布的稳定版本中看到它们(祈祷)

    更新

    所以刚刚推出了一个新的稳定版本的颤振。它包含--dart-define 的这些更改。所以从 1.17 开始,你可以使用这个键为你的 Flutter 项目定义编译时变量。

    【讨论】:

    • 如果您在 Flutter 移动客户端上检索值时使用 const,则现在有 an issue
    • 你不必做双重等于的事情。这有效:--dart-define APP_VERSION=0.1.2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多