📅  最后修改于: 2023-12-03 15:00:48.928000             🧑  作者: Mango
在 Flutter 中,获取全局上下文非常重要,可以用于许多任务,例如创建 SnackBar
或 Navigator
等。本文将介绍如何获取全局上下文。
在 Flutter 中,我们可以通过以下方法来获取全局上下文:
BuildContext
来获取全局上下文BuildContext context = context;
Builder
来获取全局上下文Builder(
builder: (BuildContext context) {
return Container();
},
);
Navigator
来获取全局上下文final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
MaterialApp(
navigatorKey: navigatorKey,
home: Scaffold(
body: GestureDetector(
onTap: () {
Navigator.of(navigatorKey.currentContext).pushNamed('/second');
},
child: Text('Go to second screen'),
),
),
onGenerateRoute: (RouteSettings settings) {
if (settings.name == '/second') {
return MaterialPageRoute(
builder: (BuildContext context) {
return Scaffold(
body: GestureDetector(
onTap: () {
Navigator.of(navigatorKey.currentContext).pop();
},
child: Text('Go back to previous screen'),
),
);
},
);
}
return null;
},
);
获取全局上下文有多种方法可以实现,这使得开发变得更加容易和灵活。无论使用哪种方法,不要忘记在 MaterialApp
中使用 navigatorKey
,这是一个必要的步骤,使得 Navigator
可以正常工作。