Dart中确定调试或发布方法的区别

时间:2019-01-03 14:11:48

标签: dart flutter

我知道确定我的应用是否以调试模式运行的两种方法:

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;
}

那两个总是相等吗?或者在某些情况下它们会给出不同的答案?我应该使用哪个?第一种方法是编译时似乎更喜欢它。

1 个答案:

答案 0 :(得分:1)

通常它们应该相同,但是可以有所不同。

const bool.fromEnvironment("dart.vm.product")取决于正在执行的发布版本。我没有检查profile构建是否返回truefalse

assert(inDebugMode = true);取决于是否启用断言。 断言默认情况下在调试模式下启用,默认情况下在发布版本中禁用断言,但是应该有一种独立于发布/调试模式启用/禁用断言的方法,但是我还没有找到方法。也许它没有在Flutter中公开,或者尚未在Dart中实现。

我认为bool.fromEnvironment()可以更好地用于摇树,因为它可以用来创建const值。