我看到了两种可能性(我自己还没有尝试过)
或者
log(String msg) {
if (const String.fromEnvironment('DEBUG') != null) {
print('debug: $msg');
}
}
main() {
log('In production, I do not exist');
}
关于变压器的一些链接:
编辑
我能够dart2js
在 pubspec.yaml 中配置选项,例如
transformers:
- $dart2js:
commandLineOptions: [-DDEBUG=true]
environment:
DEBUG: "true"
suppressWarnings: true
terse: true
pub build
如果提供了未知选项或者它不是预期的格式(yaml list
对于 commandLineOptions,yaml map
表单环境)
但 String.fromEnvironment()
没有得到值 ,它们将被验证并失败
根据这个问题,这是支持的:
Passing in arguments to dart2js during pub build
我提交了一个错误How to pass options to dart2js from pubspec.yaml
编辑-2
我试过了,它现在可以工作了:
transformers: # or dev_transformers
- $dart2js:
environment: { PROD: "true" }
从代码中访问它
String.fromEnvironment()
main() {
print('PROD: ${const String.fromEnvironment('PROD')}');
// works in the browser
// prints 'PROD: null' in Dartium
// prints 'PROD: true' in Chrome
}
另请参阅配置内置 dart2js 转换器
EDIT-3
另一种方法是使用assert
设置变量。
assert
在生产中被忽略。