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

Flutter 我可以在颤振中使用自定义环境变量吗?,flutter,dart,Flutter,Dart,我想以不同于同事的方式配置日志库,并且我不想冒险检查我的本地配置,即: void main() { LOG.minLevel = Logger.VERBOSE; LOG.showSymbols = false; runApp( RestartWidget(child: ResponsApp()) ); } 当然,我可以在每次提交时手动排除这些行,但我迟早会忘记这样做 防止此代码意外检入并在我同事的计算机上运行的最佳方法是什么?有没有办法在flift/Dart中静默地检查环境变量(

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

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

  runApp( RestartWidget(child: ResponsApp()) );
}
当然,我可以在每次提交时手动排除这些行,但我迟早会忘记这样做

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


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

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

——省道定义
flatterrun
(和其他构建命令)允许您使用
--dart define
传递环境变量
其语法如下所示:

flutter run --dart-define=VARIABLE_ONE=test --dart-define=VARIABLE_TWO=42
.fromEnvironment
您可以使用三个预定义的环境getter:(基本函数)和

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

代码中的用法 因此,如果您希望使用不同的日志模式,可以执行以下操作:

flutter run --dart-define=VARIABLE_ONE=test --dart-define=VARIABLE_TWO=42
void main(){
开关(const String.fromEnvironment('MIN\u LOG\u LEVEL','verbose')){
案例“详细”:
LOG.minLevel=Logger.VERBOSE;
打破
案例“信息”:
..
打破
...
}
...
}
运行时使用
flatter run--dart define=MIN\u LOG\u LEVEL=info

环境变量仅与dart2js(web发布版本)中的
const
修饰符一起使用,因为它们仅作为编译时常量而不是运行时getter。请参阅。

答案中可能应该提到,这仅在使用
const
String.fromEnvironment()
时有效。请参见[.不使用
const
始终会为我生成默认值。@MagnusW Right!我添加了以下内容:)注意,这仅适用于dart2js。太好了!不过,当我在Android上运行颤振应用程序时,它似乎也会影响我的颤振应用程序?