
Flutterでアプリを作っていると、「カウントを増やす」「チェックをつける」など、中身が変わる処理をしたくなりますよね?
そのとき出てくるのが……
そう! setState()!
でも、「これを使うには**@override を3回も書かないといけない**」って思ったこと、ありませんか?
今回は、その理由を 小学生でもわかるように やさしく説明します!
🧩 setState() はなにをしてるの?
setState(() {
// なにかの状態を変える(例:count += 1)
});
これは、
「今の状態が変わったから、画面も新しく描き直してね!」
というお願いをFlutterにしているものです。
👫 でも、Flutterでは“状態”と“画面”は別の場所にある
Flutterは、
- 見た目を描く人(
Widget) - 中身(状態)を覚えてる人(
State)
を分けて作るんです。
これが、StatefulWidget(設計図)と State(実体)という2つのクラスに分かれている理由!
✨ 3つの @override の正体
では、実際に setState() を使いたいとき、よく出てくる @override を見てみましょう👇
① createState():このウィジェットにどんな状態があるか教える
@override
State<MyWidget> createState() => _MyWidgetState();
📦 設計図(
StatefulWidget)が「このキッチン(State)を使ってね!」と伝えるところ。
② initState():初めて画面ができるときに1回だけ呼ばれる
@override
void initState() {
super.initState();
// 最初の準備(変数の初期化など)をする場所
}
🎬 「これからお仕事始めます!」の準備タイム。
③ build():今の状態に合わせて、画面を描く
@override
Widget build(BuildContext context) {
return Text('こんにちは');
}
🖼️ お客さんに見せるメニューを描くところ。
setState()のたびにここが呼ばれる!
🎯 まとめ:なんで setState に3回 @override が出てくるの?
@override の場所 | なにをしてる? |
|---|---|
createState() | どの「状態クラス(キッチン)」を使うか教える |
initState() | 最初の準備をする |
build() | 状態に合わせて画面を描く(何度も呼ばれる) |
💡 ポイント
setState()はStateクラスの中でしか使えない!- だから、
StatefulWidgetとStateに分けて書く必要がある! - その結果、
@overrideを 3回書くのがふつうになる!