
🪄 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()
→ 「よし、食べよう!」
📝 最後にまとめ
キーワード | 意味 |
---|---|
widget | StatefulWidget のインスタンス |
widget.xxx | 親ウィジェットが持っている値や関数 |
使える場所 | State クラスの中だけ |
よく使う | Text , onPressed , Color , bool など |
注意 | this. と混同しない!目的が違うよ! |
いつでも Flutter のコードを見せてくれたら、どこに widget.
を使うべきか一緒に考えますよ🐰
引き続き、いっしょに頑張っていきましょう!