【 Flutter 】Flutter を 基礎 から 学習 ( パフォーマンスチューニング ) part280 パフォーマンスを意識した実装
「 基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は パフォーマンスチューニング ( part280 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( パフォーマンスチューニング ) part279 パフォーマンスを意識した実装
引き続き、パフォーマンスチューニングについて学びます。
パフォーマンスを意識した実装
ウィジェットの再構築を意識する
ウィジェットツリーの深さや型を変更するときはGlobalKeyを使う
ウィジェットツリーの深さを変更する場合がある場合はサブツリーの共通部分を
GlobalKey
を持つStatefulWidget
ラップすることを検討してください。
記述されている単語は理解できる(知っている)のですが文章としてみると難解です。
「ウィジェットツリーの深さを変更する」というのはどういう状態なのでしょうかね?
「サブツリーの共通部分」???
まずはGlobalKeyを使わない例です。
以下のような結果になりました。
確かにホットリロードするたびにcall MyText#createElement()
が出力されていますね。
次はGlobalKey
を使用した例です。
ホットリロードをしてもcall MyText#createElement()
が出力されなくなりました。
再構築が行われていない証拠です!・・・とGIFをアップロードしようとしたのですがブログサーバのリソースが足りずアップローできません😅
KeyedSubrtree
というのが本書の「サブツリーの共通部分」に該当するようですね。
今回初登場です。このウィジェットは以下のように紹介されています。
KeydSubtree
は、Key
を指定できない設計の悪いウィジェットにKey
を指定できるクラスです
皮肉が混ざっているようですが筆者は嫌な経験をしたのでしょう。
ここで分かったのは「Key
を指定できないウィジェット = 悪」という構図です。
これには注意しないといけませんね。
最後に
とても便利なGlobalKey
ですがメモリを消費するしFlutterの良い部分(reactive)をつぶしかねないので多用はよくないとのことです。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません