我可以在 Flutter 中使用自定义环境变量吗?

2024-01-08

我想以与我的同事不同的方式配置我们的日志库,并且我不想冒险检查我的本地配置,即:

void main() {
  LOG.minLevel = Logger.VERBOSE;
  LOG.showSymbols = false;

  runApp( RestartWidget(child: ResponsApp()) );
}

我当然可以在每次提交时手动排除这些行,但我迟早会忘记这样做。

防止此代码意外签入并在我同事的计算机上运行的最佳方法是什么?有没有什么方法可以默默地检查 Flutter/Dart 中的环境变量(比如kDebugMode/ kReleaseMode但我只能在本地计算机上自定义)?

顺便说一句,我正在使用 IntelliJ。


您可以使用编译时环境变量:

--dart-define

flutter run(和其他构建命令)允许您使用传递环境变量--dart-define.
其语法如下:

flutter run --dart-define=VARIABLE_ONE=test --dart-define=VARIABLE_TWO=42

.fromEnvironment

您可以使用三个预定义的环境 getter:String.fromEnvironment https://api.dart.dev/stable/2.9.3/dart-core/String/String.fromEnvironment.html(基函数),int.fromEnvironment https://api.dart.dev/stable/2.9.3/dart-core/int/int.fromEnvironment.html, and bool.fromEnvironment https://api.dart.dev/stable/2.9.3/dart-core/bool/bool.fromEnvironment.html.

第一个参数是变量名称,第二个参数是后备值。

代码中的用法

因此,如果你想要不同的日志模式,你可以这样做:

void main() {
  switch (const String.fromEnvironment('MIN_LOG_LEVEL', 'verbose')) {
    case 'verbose':
       LOG.minLevel = Logger.VERBOSE;
       break;
    case 'info':
       ..
       break;
    ...
  }

  ...
}

运行时的使用

flutter run --dart-define=MIN_LOG_LEVEL=info

Note

环境变量仅适用于constdart2js(Web 发布版本)中的修饰符,因为它们仅用作编译时常量,而不用作运行时 getter。请参阅GitHub问题供参考 https://github.com/dart-lang/sdk/issues/42177#issuecomment-638696158.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 Flutter 中使用自定义环境变量吗? 的相关文章

随机推荐

  • 访问数组而不引用键

    我可以使用以下方式访问数组值 array key or array key 是否有理由避免使用其中一种而不是另一种 使用后一种变体 array key 前者只能工作 因为 PHP 是宽容的并且假定字符串值key如果没有常量命名key 始终在
  • 我们如何从java运行python脚本(使用nltk和scrapy)

    我已经在我的项目中编写了使用 scrapy nltk 和 simplejson 的 python 脚本 但我需要从 java 运行它们 因为我的导师想要将它们部署在服务器上 而我执行此操作的时间很少 我看了一眼运行时 java 和 jyth
  • 返回 json 数组的 PHP 在 javascript 中显示为 Null

    我有一个 ajax 调用 它将数据发送到 php 脚本并返回数据 如果我在 php 脚本中回显数据 我可以在 javascript 中很好地提醒它 但如果我将其作为 json 返回 则警报将不显示任何内容 我的 JavaScript aja
  • Ionic:更改 ion-navicon 颜色

    我有一个导航栏
  • 在 Three.js 中将点放置在 3D 对象模型上的坐标上

    我正在构建一个 Three js 应用程序 React 模板 如果它很重要的话 我有这个 3D 对象模型 它应该像应用程序中的行星地球一样 我有这个空间站模型 我想通过每隔一秒给出一些特定的坐标来旋转空间站到世界各地 我的问题是 例如 如果
  • NPM 警告:“引擎不受支持”

    我输入了命令npm install D tailwind css postcss autoprefixer vite在 VS 代码中 我的环境是 NPM版本 8 1 2 Node js 版本 16 13 1 这导致了以下警告 npm WAR
  • Oracle数据库的默认用户名和密码

    我在安装 Oracle DB 时忘记输入 sys system 和 hr 密码并点击 确定 但现在对于 SQ Plus 它需要这些凭据才能在命令提示符下登录 如何获取默认用户名和密码 您只需登录 sqlplus as sysdba 然后为各
  • 命令中的 CQRS 代码重复

    我有一个关于 CQRS 原则的命令端代码重复的问题 一直在关注以下文章 https www cuttingedge it blogs steven pivot entry php id 91 https www cuttingedge it
  • C#中如何获取对象的地址

    在c 中如何获取对象的地址 我搜索并发现 GCHandle handle GCHandle Alloc obj GCHandleType WeakTrackResurrection int address GCHandle ToIntPtr
  • 从二进制文件存储/加载 numpy 数组

    我想从二进制文件存储和加载 numpy 数组 为此 我创建了两个小函数 每个二进制文件应包含给定矩阵的维数 def saveArrayToFile data fileName with open fileName w as file a a
  • 我们可以从函数中按值返回具有已删除/私有复制/移动构造函数的对象吗?

    在 C 03 中 不可能按值返回具有私有非定义复制构造函数的类的对象 struct A A int x private A A const A f return A 10 error return 10 error too 我想知道 C 1
  • 使用 jsoncpp 迭代 JSON 对象数组

    我有一个 JSON 对象数组 例如 jsonArr 如下所示 attr1 somevalue attr2 someothervalue attr1 yetanothervalue attr2 andsoon 使用 jsoncpp 我尝试迭代
  • TWRequest 泄露?

    我在 ios5 中使用 Request 但 Leaks 报告 Request 内存泄漏 我正在做这样的事情 我是不是哪里出错了 TWRequest postRequest TWRequest alloc initWithURL NSURL
  • 无法将类型“float”隐式转换为“int”

    当我尝试运行以下代码时 出现错误 无法将类型 float 隐式转换为 int 我做了很多搜索 遗憾的是我无法找到针对此类错误的任何帮助 int sum1 cols rows float h twoEnds x sum1 h cols x t
  • android System.loadLibrary 加载文件的位置

    网上的一些文章告诉我System loadLibrary 将加载文件 data data app package 目录 我想知道这是否因每个供应商的实施而异或固定 最终由供应商来定义文件系统 文件系统布局 所以它可能在不同的地方 如果没有自
  • Html-loader + file-loader 未捆绑正确的图像源

    我计划在一个项目中使用 Webpack 并使用 Html loader file loader 设置我的工作流程 以获取带有图像动态 src 的生产 html 文件 正如 Colt Steele 所教的那样 这是我的 src 文件 索引 h
  • 如果程序的一部分表现出未定义的行为,它会影响程序的其余部分吗?

    假设程序员忘记初始化他的一个自动变量 并且他使用了它的值 从而调用了未定义的行为 int i 0 j printf value of j d n j char buf 256 fputs Enter query stdout fgets b
  • nvlink、可重定位设备代码和静态设备库

    在调查可重定位设备代码的一些问题时 我偶然发现了一些我不太理解的东西 这是如图所示的用例slide 6 http on demand gputechconf com gtc express 2012 presentations gpu ob
  • 无法使用 rarfile 模块提取 RAR 存档

    我一直在尝试制作一个提取 rar 文件的脚本 但收到错误 我一直在努力理解该模块的文档 但无济于事 我是编程新手 所以有时会迷失在所有文档中 这是我的代码的相关部分以及收到的错误 我的代码片段 import rarfile rarpath
  • 我可以在 Flutter 中使用自定义环境变量吗?

    我想以与我的同事不同的方式配置我们的日志库 并且我不想冒险检查我的本地配置 即 void main LOG minLevel Logger VERBOSE LOG showSymbols false runApp RestartWidget