[解決済み] Flutterですべての定数を保持するためのベストプラクティスは何ですか?
2022-09-28 23:19:54
質問
最も良いプログラミングの方法は何でしょうか?
Flutterで定数クラスを作成する
を作成して、すべてのアプリケーション定数を簡単に参照できるようにします。というのがあるのは知っているのですが
const
キーワードがあることは知っていますが、定数フィールドを作成するために
static
を使用しても良いのでしょうか?それとも実行時にメモリの問題が発生するのでしょうか?
class Constants {
static const String SUCCESS_MESSAGE=" You will be contacted by us very soon.";
}
どのように解決するのですか?
編集
これで、フラグ
--dart-define
がFlutterの様々なコマンドラインに追加されたので、以下の回答はもう当てはまりません。
代わりに、好きなところで定数を宣言し、潜在的に他の答えを参照することができます。
には技術的な問題はありませんが
static const
には技術的な問題はありませんが、アーキテクチャ上、別の方法を取りたい場合があります。
Flutterは以下のような傾向があります。 ではなく はグローバル/スタティック変数を持たず、InheritedWidgetを使用する傾向があります。
ということは、書くことができる。
class MyConstants extends InheritedWidget {
static MyConstants of(BuildContext context) => context. dependOnInheritedWidgetOfExactType<MyConstants>();
const MyConstants({Widget child, Key key}): super(key: key, child: child);
final String successMessage = 'Some message';
@override
bool updateShouldNotify(MyConstants oldWidget) => false;
}
そして、アプリのルートに挿入します。
void main() {
runApp(
MyConstants(
child: MyApp(),
),
);
}
といった感じで使われます。
@override
Widget build(BuilContext context) {
return Text(MyConstants.of(context).successMessage);
}
これは
static const
よりも少しコードが多くなりますが、多くの利点を提供します。
- ホット リロードで動作
- 簡単にテスト可能、モック可能
- アプリ全体を書き換えることなく、定数よりも動的なものに置き換えることができる。
しかし同時にそれは
- メモリをあまり消費しない (継承されたウィジェットは通常一度だけ作成されます)
- パフォーマンスが高い (InheritedWidget の取得は O(1))
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン