このサイトはアドセンスやアフィリエイト広告を利用しています

Uncategorized

🌟 Flutterの widget. をぜんぶ理解しよう!


🪄 widget. ってなに?

StatefulWidget(ステートフルウィジェット)を使うとき、
**見た目(Widget)と中身(State)**が別のクラスに分かれます。

そのとき、「親(Widget)のデータ」を「子(State)」で使いたくなったら……

widget. を使えばOK!


🧸 どうやって使うの?

たとえばこんなウィジェット:

dartコピーする編集するclass Greeting extends StatefulWidget {
  final String name;

  const Greeting({required this.name, super.key});

  @override
  State<Greeting> createState() => _GreetingState();
}

この「name」を State で使いたいときは?

dartコピーする編集するclass _GreetingState extends State<Greeting> {
  @override
  Widget build(BuildContext context) {
    return Text('こんにちは、${widget.name}さん!');
  }
}

widget.name のように書くと、親のウィジェットが持っている name を取り出せる!


📚 他にもこんな例があるよ

1. 親から渡されたタイトルを使う

dartコピーする編集するText(widget.title)

2. 親からもらった「見える/見えない」のフラグで切り替え

dartコピーする編集するif (widget.isVisible) {
return const Icon(Icons.visibility);
}

3. 親から関数をもらってボタンに使う

dartコピーする編集するElevatedButton(
onPressed: widget.onPressed,
child: const Text('押して'),
);

4. 親が渡した色で背景を変える

dartコピーする編集するContainer(color: widget.themeColor)

🧠 this. とは何が違うの?

書き方意味
this.xxx今のクラス(State)の中で定義されたものthis._count(自分の変数)
widget.xxx親のウィジェット(StatefulWidget)が持ってるwidget.title(親からの値)

つまり:

  • this. → 自分自身の道具箱
  • widget. → 親から渡された道具を借りる箱

🎁 実際のコードまとめ(テンプレ)

dartコピーする編集するclass MyWidget extends StatefulWidget {
  final String message;
  final VoidCallback onPressed;

  const MyWidget({required this.message, required this.onPressed, super.key});

  @override
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text(widget.message),              // ← 親のデータを表示
        ElevatedButton(
          onPressed: widget.onPressed,     // ← 親からの関数を実行
          child: const Text('やってみる!'),
        ),
      ],
    );
  }
}

💡 よくある用途まとめ

やりたいこと書き方
親から受け取った文字を表示Text(widget.title)
親が渡した関数を呼び出すonPressed: widget.onTap
親が渡した色でデザイン変更color: widget.bgColor
親から受けた初期状態を使うwidget.isFirstTime

⚠ 注意点

  • widget.Stateクラスの中でしか使えません!
  • final なプロパティしか持てません(途中で変更できない前提)
  • widget そのものは「親ウィジェットのインスタンス」です

🐣 わかりやすいたとえ話

widget. は、お母さん(親)からもらったお弁当箱みたいなもの。

  • 自分(State)はごはんを食べたいとき、
  • 親(Widget)からもらった「おかず」を使う。

🍱 widget.name → 「今日のメインは、からあげだ!」
🍱 widget.onPressed() → 「よし、食べよう!」


📝 最後にまとめ

キーワード意味
widgetStatefulWidget のインスタンス
widget.xxx親ウィジェットが持っている値や関数
使える場所State クラスの中だけ
よく使うText, onPressed, Color, bool など
注意this. と混同しない!目的が違うよ!

いつでも Flutter のコードを見せてくれたら、どこに widget. を使うべきか一緒に考えますよ🐰
引き続き、いっしょに頑張っていきましょう!

-Uncategorized