首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在颤振中使用自定义环境变量吗?

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

Stack Overflow用户
提问于 2020-09-28 14:59:13
回答 1查看 3K关注 0票数 4

我想以与我的同事不同的方式配置日志库,我不想冒险在我的本地配置中进行检查,即:

代码语言:javascript
运行
复制
void main() {
  LOG.minLevel = Logger.VERBOSE;
  LOG.showSymbols = false;

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

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

防止此代码意外被检入并在同事计算机上运行的最佳方法是什么?有没有任何方法可以悄悄地检查Flutter/Dart中的环境变量(类似于kDebugMode/ kReleaseMode,但我只能在本地机器上进行自定义)?

我用的是IntelliJ。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 15:07:38

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

--dart-define

flutter run (和其他构建命令)允许您使用--dart-define传递环境变量。

它的语法如下所示:

代码语言:javascript
运行
复制
flutter run --dart-define=VARIABLE_ONE=test --dart-define=VARIABLE_TWO=42

.fromEnvironment

您可以使用三个预定义的环境getter:String.fromEnvironment (基函数)、int.fromEnvironmentbool.fromEnvironment

第一个参数是变量名,第二个参数是回退值。

代码中的用法

因此,如果您想拥有不同的日志模式,您可以这样做:

代码语言:javascript
运行
复制
void main() {
  switch (const String.fromEnvironment('MIN_LOG_LEVEL', 'verbose')) {
    case 'verbose':
       LOG.minLevel = Logger.VERBOSE;
       break;
    case 'info':
       ..
       break;
    ...
  }

  ...
}

运行时的使用

代码语言:javascript
运行
复制
flutter run --dart-define=MIN_LOG_LEVEL=info

备注

环境变量只使用dart2js (web )中的dart2js修饰符,因为它们只作为编译时常量而不是运行时getter。见GitHub问题供参考

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64104688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档