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

如果发布,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;
}

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

最佳答案

通常,它们应该相同,但是可以有所不同。
const bool.fromEnvironment("dart.vm.product")取决于正在执行的发行版本。我尚未检查profile构建是否返回truefalseassert(inDebugMode = true);取决于启用的断言。
断言默认情况下在 Debug模式下启用,默认情况下在发行版本中禁用,但是应该有一种方法可以独立于发行版/ Debug模式启用/禁用断言,但是我还没有找到方法。也许它没有在Flutter中公开,或者尚未在Dart中实现。

我认为bool.fromEnvironment()与摇树比较好,因为它可用于创建const值。

10-06 08:02