GlobalKeyとLocalKeyの違い
前回、GlobalKeyについては図1のように、Contextツリー構造とは関係なく任意のStateにアクセスするための手段として用いられるという説明をしました。
そして、今回紹介するLocalKeyは親Widgetから子を識別するためのものになります。しかし、キーを指定していなくても親から子は識別できるのではと思う方も多いはずです。
実際、LocalKeyはGlobalKeyよりも使うシーンは少なくなります。しかし、Flutterの画面表示処理の実装上の都合によりLocalKeyが必要な場合もあるので、使うことがなくても知識だけは持っておくとよいでしょう。
LocalKeyの用途
LocalKeyには、先ほどの記した目的に加え、大きく分けて以下の2つの用途があります。
- FlutterのWidget管理の実装上で生じる表示上の問題の回避
- Widgetの親子で機能を連携する際の子の識別
このように同じLocalKeyにもかかわらず全く違う用途で利用するため、LocalKeyの理解がより難しくなります。また、そもそもキーだけに着目すると抽象的になってしまうため、本稿ではより役割を明確に説明するために、実際のコード例をもちいてこれらの役割について説明していきます。