Muh*_*fay 2 dart flutter flutter-layout
有什么办法可以get the global context of Material App in Flutter。不是特定屏幕的上下文。
我正在尝试获取上下文,但它为我提供了特定屏幕的上下文,但我想要 MaterialApp 的上下文。
Muh*_*fay 80
如果上述解决方案不起作用,请尝试此解决方案。
创建类。这里它命名为NavigationService
import 'package:flutter/material.dart';
class NavigationService {
static GlobalKey<NavigatorState> navigatorKey =
GlobalKey<NavigatorState>();
}
Run Code Online (Sandbox Code Playgroud)
在main.dart中设置MaterialApp的navigatorKey属性
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: NavigationService.navigatorKey, // set property
)
}
Run Code Online (Sandbox Code Playgroud)
伟大的!现在您可以在任何您想要的地方使用,例如
print("---print context:
${NavigationService.navigatorKey.currentContext}");
Run Code Online (Sandbox Code Playgroud)
Shu*_*oni 11
将 a 分配GlobalKey()给MaterialApp您可以放在单独的类中的,我们称之为App:
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: App.materialKey, // GlobalKey()
)
}
Run Code Online (Sandbox Code Playgroud)
现在,无论您想要获取context的MaterialApp,您只需调用:
App.materialKey.currentContext
Run Code Online (Sandbox Code Playgroud)
我在这里打印MaterialApp context:
print('Material App Context : ${App.materialKey.currentContext}');
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
flutter: Material App Context : MaterialApp-[GlobalKey#4fab4](state: _MaterialAppState#4bb44)
| 归档时间: |
|
| 查看次数: |
3284 次 |
| 最近记录: |