0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flutter案件に入って戸惑った2つのこと

Posted at

はじめに

最近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ユーザーの僕からしたら直感的な書き方です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?