Flutterの質問
質問日時
2021年05月13日
a-sato再代入が不可能な変数定義の修飾子finalとconstの違いがよく分かりません。 constの方はコンパイル時に値が確定するとのことですが、実際にそういった差異をどのように使い分けるのでしょうか?
2021年05月18日
t-kobayashiconstはコンパイル時に代入される変数(定数なのに変数というのは不思議ですが、コンパイル時に代入されているので定義はやはり変数になります)。例えば円周率const double pi = 3.14;
のように、プログラムを起動する前から、プログラムが終了するまで、変わることのない変数を定義する場合は、constを使います。
一方、finalはランタイム中に一度だけ代入できる変数の前に付けます。典型的な話としては、StatelessWidgetはランタイム中に作成されますが、作成後はランタイム終了まで変更されまないということが前提なので、StatelessWidgetの中で定義される変数はすべてfinalにする必要があります。
例えば、ボタンを表示するStatelessWidgetがあるとします。
class SampleButton extends StatelessWidget {
final String title;
SampleButton({this.title});
@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: () => {
//
},
child: Text(
title,
),
);
}
}
このSampleButtonはStatelessWidgetのなので、作成後は変化しませんが、titleはランタイムにならないとわかりません。なので、constではなくてfinalにする必要があります。
1件の回答
2021年05月18日
t-kobayashi関連した質問
質問日時 2023年07月31日
質問日時 2021年07月01日
質問日時 2021年06月30日
質問日時 2021年05月20日
質問日時 2021年05月14日
Flutterの記事
2021年10月20日
package:flutter_lintsの導入
2021年10月06日
Flutterでウェブアプリケーションを作ってみる
2021年09月29日
Flutter 2.5.0にアップデートした際に発生したエラー
2021年09月15日
CocoaPodsを更新しても、iOS版がビルドできない場合
2021年08月25日
Androidビルド作成時またエラーが発生したので、その対応方法
2021年08月16日
just audio 0.2.2から0.7.4+1に更新後の挙動の変化