次のコード スニペットを検討してください。
class CustomStateFulWidget extends StatefulWidget {
final GlobalKey<NavigatorState> navigatorKeyFinal = GlobalKey();
@override
_CustomStateFulWidget createState() => _CustomStateFulWidget();
}
class _CustomStateFulWidget extends State<CustomStateFulWidget> {
GlobalKey<NavigatorState> navigatorKeyLocal = GlobalKey();
@override
Widget build(BuildContext context) {
print("Navigator key local: ${navigatorKeyLocal.hashCode}");
print("Navigator key final: ${widget.navigatorKeyFinal.hashCode}");
return Center();
}
}
上記のコードでは、 _CustomStateFulWidgetのビルド メソッドが呼び出されるたびに、navigatorKeyFinal 変数の値が変更されますが、navigatorKeyLocal 変数は変更されません。誰でもこの動作の理由を説明できますか?