我想以与我的同事不同的方式配置日志库,我不想冒险在我的本地配置中进行检查,即:
void main() {
LOG.minLevel = Logger.VERBOSE;
LOG.showSymbols = false;
runApp( RestartWidget(child: ResponsApp()) );
}
当然,每次提交时,我都可以手动排除这些行,但我迟早会忘记这样做。
防止此代码意外被检入并在同事计算机上运行的最佳方法是什么?有没有任何方法可以悄悄地检查Flutter/Dart中的环境变量(类似于kDebugMode
/ kReleaseMode
,但我只能在本地机器上进行自定义)?
我用的是IntelliJ。
发布于 2020-09-28 15:07:38
您可以使用编译时环境变量:
--dart-define
flutter run
(和其他构建命令)允许您使用--dart-define
传递环境变量。
它的语法如下所示:
flutter run --dart-define=VARIABLE_ONE=test --dart-define=VARIABLE_TWO=42
.fromEnvironment
您可以使用三个预定义的环境getter:String.fromEnvironment
(基函数)、int.fromEnvironment
和bool.fromEnvironment
。
第一个参数是变量名,第二个参数是回退值。
代码中的用法
因此,如果您想拥有不同的日志模式,您可以这样做:
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
备注
环境变量只使用dart2js (web )中的dart2js修饰符,因为它们只作为编译时常量而不是运行时getter。见GitHub问题供参考。
https://stackoverflow.com/questions/64104688
复制相似问题