短い質問があります。アプリがデバッグモードのときにFlutterでコードを実行する方法を探しています。Flutterでそれは可能ですか?ドキュメントのどこにも見つからないようです。
このようなもの
If(app.inDebugMode) {
print("Print only in debug mode");
}
Flutterアプリケーションがデバッグモードまたはリリースモードで実行されているかどうかを確認するにはどうすればよいですか?
短い質問があります。アプリがデバッグモードのときにFlutterでコードを実行する方法を探しています。Flutterでそれは可能ですか?ドキュメントのどこにも見つからないようです。
このようなもの
If(app.inDebugMode) {
print("Print only in debug mode");
}
Flutterアプリケーションがデバッグモードまたはリリースモードで実行されているかどうかを確認するにはどうすればよいですか?
回答:
これは機能しますが、定数kReleaseMode
またはを使用するkDebugMode
ことをお勧めします。完全な説明については、以下のレミの回答を参照してください。これはおそらく受け入れられる質問です。
最も簡単な方法はassert
、デバッグモードでのみ実行されるため使用することです。
Flutterのナビゲーターのソースコードの例を次に示します。
assert(() {
if (navigator == null && !nullOk) {
throw new FlutterError(
'Navigator operation requested with a context that does not include a Navigator.\n'
'The context used to push or pop routes from the Navigator must be that of a '
'widget that is a descendant of a Navigator widget.'
);
}
return true;
}());
特に、()
呼び出しの最後にあることに注意してください。assertはブール値でのみ動作できるため、関数を渡すだけでは機能しません。
() { .... }
は関数を定義していますが、それを呼び出していません。()
実際に追加すると、関数が呼び出されます。
アサートは技術的には機能しますが、使用しないでください。
代わりに、kReleaseMode
からの定数を使用してくださいpackage:flutter/foundation.dart
違いはすべて木の揺れです
ツリーの揺れ(コンパイラが未使用のコードを削除すること)は、変数が定数であることに依存します。
問題は、isInReleaseMode
ブール値が定数ではないと断言することです。そのため、アプリを出荷するときに、開発コードとリリースコードの両方が含まれています。
一方、kReleaseMode
は定数です。したがって、コンパイラは未使用のコードを正しく削除でき、安全に次のことができます。
if (kReleaseMode) {
} else {
// Will be tree-shaked on release builds.
}
import 'package:flutter/foundation.dart' as Foundation;
、あなたが行うことができますFoundation. kReleaseMode
kDebugMode
この小さなスニペットはあなたが必要なことをするはずです
bool get isInDebugMode {
bool inDebugMode = false;
assert(inDebugMode = true);
return inDebugMode;
}
そうでない場合はmain.dart
、ブール値を設定できるデバッグモードで別のモードを起動するようにIDEを構成できます。
Application
クラスに静的として配置して、Application.isInDebugMode
必要な場所に記述できるようにします。
これに対する簡単な解決策は次のとおりです。
import 'package:flutter/foundation.dart';
その後、あなたはのkReleaseMode
ように使用することができます
if(kReleaseMode){ // is Release Mode ??
print('release mode');
} else {
print('debug mode');
}
kDebugMode
これで、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 {
}
これはpreferrable終わった!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 {
}