StatefulWidget を救いたい
自己紹介
中條 剛(ちゅうじょう つよし)
こんな記事書いてます
“ how it works” を勉強する記事が中心
“ how to use” の紹介記事が中心
こんなところで働いています
株式会社はんぽさき
漁船 やそれに関わる仕事を支援、管理するためのシステムを Flutter アプリと Web アプリ(Angular)で開発しています。
興味のある方は ↑ の bosyu リンクから。
StatefulWidget 使ってますか?
StatefulWidget にしかできないことを見つけて
StatefulWidget を救いたい
StatefulWidget とは
StatefulWidget のドキュメントを読む
If a subtree does not change, cache the widget that represents that subtree and re-use it each time it can be used. It is massively more efficient for a widget to be re-used than for a new (but identically-configured) widget to be created.
(意訳)サブツリーに変更が無い場合、サブツリーを構築する Widget をキャッシュして使い回すと良いでしょう。変更のない Widget を新しく生成し直すよりも使い回す方が圧倒的に効率的です。
コストが高いリビルドランキング(ざっくり版)
リビルド
する
リビルド
しない
キャッシュを
使い回し!
リビルドの伝播を堰き止めるイメージ
Element.updateChild で処理している ( framework.dart の 3307 行目あたり )
インスタンスが
同一かを判定
State に Widget をキャッシュしよう
パターン1
キャッシュがあれば使い回す
パターン2
状態が変わっていなければ使い回す
なぜ StatefulWidget を使うのか
ココだけ!
注意
In the end, it's your job to decide if you need a StatefulWidget or not.
You may need it when writing animations for example.
(意訳)結局のところ、StatefulWidget を使うかどうかは 開発者1人ひとりが決めることです。アニメーションなんかでも使うしね。
ご静聴ありがとうございました