我正在寻找一种在应用程序处于调试模式时在Flutter中执行代码的方法。在颤振有可能吗?我在文件里找不到。

就像这样

If(app.inDebugMode) {
   print("Print only in debug mode");
}

如何检查Flutter应用程序是运行在调试模式还是发布模式?


当前回答

我相信最新的做法是:

const bool prod = const bool.fromEnvironment('dart.vm.product');

src

其他回答

k调试模式

现在可以使用kDebugMode常量了。

if (kDebugMode) {
  // Code here will only be included in debug mode.
  // As kDebugMode is a constant, the tree shaker
  // will remove the code entirely from compiled code.
} else {

}

这比!kReleaseMode更可取,因为它也检查配置文件模式,即,kDebugMode表示不在发布模式和不在配置文件模式。

kReleaseMode

如果你只是想检查释放模式,而不是配置文件模式,你可以使用kReleaseMode代替:

if (kReleaseMode) {
  // Code here will only be run in release mode.
  // As kReleaseMode is a constant, the tree shaker
  // will remove the code entirely from other builds.
} else {

}

kProfileMode

如果你只是想检查配置文件模式,而不是发布模式,你可以使用kProfileMode代替:

if (kProfileMode) {
  // Code here will only be run in release mode.
  // As kProfileMode is a constant, the tree shaker
  // will remove the code entirely from other builds.
} else {

}

导入这个

import 'package:flutter/foundation.dart' 


String bulid = kReleaseMode ? "Release" : "";

or

String bulid = kDebugMode ? "Debug" : "";

or

String bulid = kProfileMode ? "Profile" : "";

或者试试这个

if (kDebugMode) {
   print("Debug");
} else if (kReleaseMode) {
    print("Release"); 
} else if (kProfileMode) {
  print("Profile"); 
}

摘自Dart文档:

断言到底在什么时候起作用?这取决于工具和 你正在使用的框架: Flutter在调试模式下启用断言。 仅用于开发的工具(如dartdevc)通常默认启用断言。 有些工具,如dart和dart2js,通过命令行标志——enable- assertions来支持断言。 在产品代码中,断言将被忽略,而参数将被忽略 Assert没有被求值。

我创建了这个有用的类,基于其他答案和Android使用的启发。 如果“Foundation”包上有任何更改,则不需要更改整个应用程序,只需要更改这个类。

import 'package:flutter/foundation.dart' as Foundation;

abstract class Build {

    static const bool isDebugMode = Foundation.kDebugMode;

    static const bool isReleaseMode = Foundation.kReleaseMode;

    static const bool isWeb = Foundation.kIsWeb;

    static const bool isProfileMode = Foundation.kProfileMode;

}

不要挑剔,但是基础包包含一个kDebugMode常量。

So:

import 'package:flutter/foundation.dart' as Foundation;

if(Foundation.kDebugMode) {
   print("App in debug mode");
}