Flutter Navigator.of(context).pop与Navigator.pop(context)的区别

时间:2019-04-06 10:25:57

标签: dart flutter

Navigator.of(context).popNavigator.pop(context)有什么区别?

在我看来,两者似乎都做同样的工作,实际的区别是什么。是否已弃用?

2 个答案:

答案 0 :(得分:3)

Navigator.push(上下文,路由)与Navigator.of(上下文).push(路由)

Navigator用于管理应用程序的页面堆栈(路线)。将给定的路线推送到屏幕上(导航器)时,我们需要获取正确的导航器,然后进行推送。

Navigator.of(context).push(route).of(context)拆分为正确的导航器和.push(route)Navigator.of(context)具有可选参数,如果rootNavigator设置为true,则会给出距离最远的NavigatorState。

  static NavigatorState of(
    BuildContext context, {
    bool rootNavigator = false,
    bool nullOk = false,
  })

Navigator.push(context, route)是静态方法,并且两者同时执行。它在内部调用Navigator.of(context).push(route)。导航器最紧密地包围了给定的上下文。

static Future<T> push<T extends Object>(BuildContext context, Route<T> route) {
    return Navigator.of(context).push(route);
}

pop()push()相似。

当多个导航器嵌套在App中时。由showDialog(...)方法创建的对话框路由被推送到根导航器。如果应用程序具有多个导航器对象,则可能有必要调用Navigator.of(context, rootNavigator: true).pop(result)来关闭对话框,而不是仅Navigator.pop(context, result)

答案 1 :(得分:0)

U = (2.4626 +- 3e-4)e-02尊重系统如何处理Navigator.of(context).pop不支持的后按。

下面显示了一种情况,其中我已禁用后退按钮的按下,但第二个按钮仍然允许。

Navigator.pop(context)