所以我想知道关闭时使用的命令AlertDialog:
FlatButton(
child: Text('Okay'),
onPressed: () {
Navigator.of(context).pop();
},
),
Run Code Online (Sandbox Code Playgroud)
.of() 到底做了什么?我在 flutter 开发文档中找不到任何内容(可能是因为我缺少正确的搜索词)
谁能解释那里发生了什么?
在 Flutter SDK 中,这些.of方法是一种服务定位器函数,它以框架 BuildContext 作为参数,并返回与指定类相关但由小部件树上的小部件创建的内部 API。然后,子窗口小部件可以使用这些 API 来访问父窗口小部件上设置的状态,并在某些情况下(例如导航器)来操作它们。该模式鼓励组件化,并将与构建树相关的信息的生产与其消耗解耦。
除了Navigator.of(返回 NavigatorState)之外还有:
Theme.of(返回包含环境主题设置的 ThemeData)MediaQuery.of(返回一个 MediaQueryData,其中包含有关设备屏幕尺寸的计算信息)Directionality.of(返回包含有关文本显示信息的 TextDirection)当然,Flutter 有非特定的方法用于从构建上下文中查找父窗口小部件:
context.findAncestorWidgetOfExactType<T extends Widget>()
context.findAncestorStateOfType<T extends State>()
context.findRootAncestorStateOfType<T extends State>()
Run Code Online (Sandbox Code Playgroud)
soTheme.of(context)实际上只是一个静态简写context.findAncestorWidgetOfExactType<Theme>().data并且Navigator.of(context).pop()实际上只是一个简写context.findAncestorStateOfType<NavigatorState>().pop()
| 归档时间: |
|
| 查看次数: |
3500 次 |
| 最近记录: |