Flutter 颤振中术语.of()的含义

Flutter 颤振中术语.of()的含义,flutter,Flutter,因此,我想知道我在关闭AlertDialog时使用的命令: 你到底做什么?我在flatterdev文档中找不到任何东西,可能是因为我缺少正确的搜索词 有人能解释一下那里发生了什么吗?来自Navigator类的 虽然可以直接创建导航器,但最常见的是使用路由器创建的导航器,路由器本身由WidgetsApp或MaterialApp小部件创建和配置。您可以使用navigator.of引用该导航器 作为一般规则,任何时候在OO语言中看到某个对象的Classname.ofsomeObject行中的某个东西,

因此,我想知道我在关闭AlertDialog时使用的命令:

你到底做什么?我在flatterdev文档中找不到任何东西,可能是因为我缺少正确的搜索词

有人能解释一下那里发生了什么吗?

来自Navigator类的

虽然可以直接创建导航器,但最常见的是使用路由器创建的导航器,路由器本身由WidgetsApp或MaterialApp小部件创建和配置。您可以使用navigator.of引用该导航器

作为一般规则,任何时候在OO语言中看到某个对象的Classname.ofsomeObject行中的某个东西,.of是一个生成器,它从某个对象返回一个Classname实例。

从Navigator类的

虽然可以直接创建导航器,但最常见的是使用路由器创建的导航器,路由器本身由WidgetsApp或MaterialApp小部件创建和配置。您可以使用navigator.of引用该导航器

作为一般规则,在OO语言中,每当您看到某个对象的Classname.ofsome行中的某些内容时,.of是从某个对象返回类名实例的生成器。

在Flatter SDK中,.of方法是一种服务定位器函数,它将框架BuildContext作为参数,并返回与命名类相关的内部API,但由小部件树上更高的小部件创建。然后,子部件可以使用这些API访问父部件上的状态集,在某些情况下(如Navigator)可以使用这些API来操作它们。该模式鼓励组件化,并将与构建树相关的信息的生成与其消耗解耦

除了Navigator.of返回Navigator状态外,还有:

Theme.of返回包含环境主题设置的主题数据 MediaQuery.of返回一个MediaQueryData,其中包含关于设备屏幕大小的计算信息 返回包含文本显示信息的TextDirection 当然,flatter有从构建上下文中查找父窗口小部件的非特定方法:

context.findAncestorWidgetOfExactType<T extends Widget>()
context.findAncestorStateOfType<T extends State>()
context.findRootAncestorStateOfType<T extends State>()
因此,Theme.ofcontext实际上只是context.findAncestorWidgetOfExactType.data和Navigator.ofcontext.pop的静态速记。findAncestorStateOfType.pop在FlatterSDK中是一种服务定位函数,它将框架构建上下文作为参数并返回与命名类相关的内部API,但由小部件树上较高的小部件创建。然后,子部件可以使用这些API访问父部件上的状态集,在某些情况下(如Navigator)可以使用这些API来操作它们。该模式鼓励组件化,并将与构建树相关的信息的生成与其消耗解耦

除了Navigator.of返回Navigator状态外,还有:

Theme.of返回包含环境主题设置的主题数据 MediaQuery.of返回一个MediaQueryData,其中包含关于设备屏幕大小的计算信息 返回包含文本显示信息的TextDirection 当然,flatter有从构建上下文中查找父窗口小部件的非特定方法:

context.findAncestorWidgetOfExactType<T extends Widget>()
context.findAncestorStateOfType<T extends State>()
context.findRootAncestorStateOfType<T extends State>()

因此,Theme.ofcontext实际上只是context.findAncestorWidgetOfExactType.data和Navigator.ofcontext.pop的静态速记,实际上只是context.findAncestorStateOfType.pop的速记,那么.of命令是否仅限于这些类?理论上,如果我做对了,我应该能够将我自己的。of实现到一个类中?例如,如果我想访问父窗口小部件的抽屉。我应该能够通过Drawer.ofcontext获得它吗?我引用的方法是颤振SDK作者在颤振小部件类上提供的方法,可能还有其他方法,这些只是我想到的方法。当然,你可以定义你自己的方法来为你的小部件类做任何你想做的事情,但是在我看来,调用“父api查找”例程是很有必要的。我在自己的代码库中已经做了很多,那么.of命令是否仅限于这些类?理论上,如果我做对了,我应该能够将我自己的。of实现到一个类中?例如,如果我想访问父窗口小部件的抽屉。我应该能够通过Drawer.ofcontext获得它吗?我引用的方法是颤振SDK作者在颤振小部件类上提供的方法,可能还有其他方法,这些只是我想到的方法。当然,你可以定义你自己的方法来为你的小部件类做任何你想做的事情,但是在我看来,调用“父api查找”例程是很有必要的。我在自己的代码库中做了很多。