NavigatorKey
概要
NavigatorKey
はグローバルなBuildContextを取得したい場合に使用する。
主にUIに依存しないダイアログなどを作成する場合に役に立つ。
実装
まずグローバルでNavigatorKey
を宣言する。
import 'package:flutter/material.dart';
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
次にMaterialApp
内でNavigatorKey
をプロパティとして渡す。
大抵このウィジェットはmain.dart
内にある。
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: APP_THEME_DATA,
navigatorKey: navigatorKey, //ここを追加
home: const MyHomePage(),
);
}
}
これでnavigatorKey
を使用してBuildContextなしでcontextを取得できるようになった。
書き方はnavigatorKey.currentState!
である。
以下はその例。
BuildContext引数なしでcontextを取得することができている。
showWarnDialog(){
showDialog(
context: navigatorKey.currentContext!,
builder: (BuildContext context){
return ... ;
}
);