くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

FlutterのGlabalKeyについてしらべてみた

go_routerをさわってて、GlabalKeyが出てくるけど、
なにかな?と思って調べたときの備忘録(*´ω`*)

特定のWidetsなどを、どこからでもアクセスできるようにできるやつらしい。
Vueのrefsに似ている感じかな。

Global keys uniquely identify elements.
GolobalKeyはElementを一意に識別する。

Global keys provide access to other objects that are associated with those elements, such as BuildContext.
BuildContextなど、関連付けられた他のオブジェクトへアクセスできるようにします。

For StatefulWidgets, global keys also provide access to State.
StatefulWidgetの場合、Stateへのアクセスもできます。

GitHubのソースはこのあたり。

// ソースの抜粋
abstract class GlobalKey<T extends State<StatefulWidget>> extends Key {
  Element? get _currentElement => WidgetsBinding.instance.buildOwner!._globalKeyRegistry[this];
  
  BuildContext? get currentContext => _currentElement;
  
  Widget? get currentWidget => _currentElement?.widget;
  
  T? get currentState {}

以上!!