1
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] super.keyって結局何?

Last updated at Posted at 2024-04-28

初めに

ウィジェットを作成する際に、呪文のように書いているXxx({super.key})ですが、全く意味が推測できなかったので自分なりに調べてみました。
そもそも、super.keyってなんかすごいスーパーなことしてそうですよね。

そもそもXxx()では何が行われているのか

例えば、ステートレスウィジェットを作成する際は以下のように記述しますよね

class Xxx extends StatelessWidget {
    Xxx({
        // ここ
    });

    @override 
    Widget build(BuildContext context) {
        return Container();
    }
}

これはstatelessWidgetを継承しているXxxの初期化を行っています。
つまり、ここで引数を受け取ってXxx内で使えるようにしているんですね。

本題

じゃあsuper.keyって結局何?という本題に入ります。
superとkeyに分けて説明しますね。

superとは

先ほど、statelessWidgetを継承しているXxxといいましたが、flutterが用意してくれている親クラスのstatelessWidgetを使って自作でXxxを作成しているということなんですね。
そのため、親クラスのstatelessWidgetの機能を呼び出さないとXxxは使えません。
そこで、superを使用することで、拡張(継承)元のクラス(親クラス)のコンストラクタやメソッドを呼び出して、その機能をXxxウィジェットにも適用させることができます。だから、初期化時にsuperが必要なんですね。

keyとは

keyはその名の通り鍵です。
では、なぜkeyが必要なのかというと、例えば親クラスのstatelessWidgetには子クラスXxxやYyy、Zzzがあった場合それぞれ識別する必要があります。そこで使うのがkeyです。

まとめ

つまり、super.keyという記述は、XxxウィジェットがstatelessWidgetの機能を継承するために必要なコンストラクタの呼び出しを行い、その中でkeyを使ってXxxを識別します。
これにより、Flutterはウィジェットの状態管理やUIの更新を効率的に行うことができるんですね。
これは、statelessWidgetだけではなく、statefullWidgetも同じことが言えます

1
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
1
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?