はじめに
最近Flutter案件に参加して、コードを読みながら「え、なにこれ?」と感じたポイントがいくつかありました。
最初につまづいた2つのこと、
-
@override
の意味と使い方 -
for文
とmap()
の使い分け
について、Flutter初心者目線で整理してみます。
1. @override
って何者?
Flutterでは、@override
がよく使われています。
最初は「なんでわざわざ書くの?書かないと動かないの?」と疑問でした。
✅ 結論:親クラスの機能を上書きする宣言
たとえば、StatefulWidget
の中で使う initState()
。
これは実は「親クラス(State)で定義された関数」で、自分のクラスにカスタム処理を入れたいときに上書き(override)して使います。
@override
void initState() {
super.initState(); // ← 親のinitState()もちゃんと呼ぶ
// 自分の処理
}
💡 @override
があるといい理由
- 親にちゃんとある関数かどうか Dartがチェックしてくれる
- 読み手にも「上書きしてるな」と一目でわかる
つまり @override
は「安全のための宣言」みたいなものです。
書かなくても動くことはありますが、書いた方がいいらしいです。
2. Flutterで for文
が多用されていて驚いた話
Flutterでは、リストを使って複数のWidgetを並べる場面がめちゃくちゃ多いです。
入った案件ではこんなコードを見かけました。
List<Widget> widgets = [];
for (var item in items) {
widgets.add(Text(item));
}
これは動きますが、Flutterらしい書き方ではないそうです。
✅ Flutterの基本は map()
+toList()
final widgets = items.map((item) => Text(item)).toList();
さらに ...
(スプレッド演算子)と組み合わせると、もっとFlutterっぽくなります:
Column(
children: [
Text('リスト:'),
...items.map((item) => Text(item)).toList(),
],
);
TypeScriptユーザーの僕からしたら直感的な書き方です!