我知道确定我的应用是否以调试模式运行的两种方法:
const bool.fromEnvironment("dart.vm.product")
如果发布,则返回true。
这来自Flutter文档的Sentry部分:
bool get isInDebugMode {
// Assume we're in production mode
bool inDebugMode = false;
// Assert expressions are only evaluated during development. They are ignored
// in production. Therefore, this code will only turn `inDebugMode` to true
// in our development environments!
assert(inDebugMode = true);
return inDebugMode;
}
那两个总是相等吗?或者在某些情况下它们会给出不同的答案?我应该使用哪个?第一种方法是编译时似乎更喜欢它。
答案 0 :(得分:1)
通常它们应该相同,但是可以有所不同。
const bool.fromEnvironment("dart.vm.product")
取决于正在执行的发布版本。我没有检查profile
构建是否返回true
或false
assert(inDebugMode = true);
取决于是否启用断言。
断言默认情况下在调试模式下启用,默认情况下在发布版本中禁用断言,但是应该有一种独立于发布/调试模式启用/禁用断言的方法,但是我还没有找到方法。也许它没有在Flutter中公开,或者尚未在Dart中实现。
我认为bool.fromEnvironment()
可以更好地用于摇树,因为它可以用来创建const值。