¿Cómo puedo verificar si una aplicación Flutter se está ejecutando en depuración?
Estoy buscando una manera de ejecutar código en Flutter cuando la aplicación está en modo de depuración. ¿Es eso posible en Flutter? Parece que no puedo encontrarlo en ninguna parte de la documentación.
Algo como esto
If(app.inDebugMode) {
print("Print only in debug mode");
}
¿Cómo puedo verificar si la aplicación Flutter se está ejecutando en modo de depuración o lanzamiento?
En versiones posteriores, puede utilizar kDebugMode
:
if (kDebugMode)
doSomething();
Si bien las afirmaciones pueden usarse técnicamente para crear manualmente una variable de "modo de depuración", debes evitarlo.
En su lugar, utilice la constante kReleaseMode
depackage:flutter/foundation.dart
La diferencia radica en la sacudida de los árboles.
La sacudida del árbol (también conocida como el compilador que elimina el código no utilizado) depende de que las variables sean constantes.
El problema es que con afirmaciones nuestro isInReleaseMode
booleano no es una constante. Entonces, al enviar nuestra aplicación, se incluyen tanto el código de desarrollo como el de lanzamiento.
Por otra parte, kReleaseMode
es una constante. Por lo tanto, el compilador puede eliminar correctamente el código no utilizado y podemos hacer con seguridad:
if (kReleaseMode) {
} else {
// Will be tree-shaked on release builds.
}
Aquí hay una solución simple para esto:
import 'package:flutter/foundation.dart';
Entonces puedes usar kReleaseMode
como
if(kReleaseMode){ // Is Release Mode??
print('release mode');
} else {
print('debug mode');
}
kDebugMode
Ahora puedes usar la kDebugMode
constante .
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 {
}
Esto es preferible !kReleaseMode
a que también verifique el modo de perfil, es decir, kDebugMode
significa que no está en modo de lanzamiento ni en modo de perfil .
kReleaseMode
Si solo desea verificar el modo de lanzamiento y no el modo de perfil, puede usar kReleaseMode
en su lugar:
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
Si solo desea verificar el modo de perfil y no el modo de lanzamiento, puede usar 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 {
}
Utilice la respuesta de Remi con kReleaseMode
yo kDebugMode
La compilación de Dart no podrá sacudir su código.
Este pequeño fragmento debería hacer lo que necesitas:
bool get isInDebugMode {
bool inDebugMode = false;
assert(inDebugMode = true);
return inDebugMode;
}
De lo contrario, puede configurar su IDE para iniciar un main.dart
modo de depuración diferente donde puede configurar un valor booleano.