呈现和消除模式窗口小部件流的正确方法是什么?

问题描述 投票:2回答:1

我对Flutter还是很陌生,来自iOS开发。我正在尝试创建一个可从应用程序中的任何位置启动的模式小部件流程/旅程,而我在掌握如何正确呈现和消除模式流程方面遇到了麻烦。

[每当我想从应用程序中的某个位置呈现模式流时,都会调用此函数:

Widget launchModalFlow() {
  return Navigator(
    onGenerateRoute: (settings) => MaterialPageRoute(
      settings: settings,
      builder: (BuildContext _) => FirstStepScreen(
        didComplete: (context) {
          _pushSecondScreen(context); // this is a method which uses Navigator.of(context) to push another widget onto the navigation stack
        },
      ),
    ),
  );
}

这样称呼:

Navigator.of(context, rootNavigator: true).push(new MaterialPageRoute(
  builder: (BuildContext context) {
    return launchModalFlow();
  },
  fullscreenDialog: true,
));

[每当我希望消除模态流时,我都会在模态流中执行此操作,例如,当您在应用程序栏中点击关闭或到达流尾时:

Navigator.of(context, rootNavigator: true).pop();

虽然这是某种作品,但由于(可能更多,但主要是)两个原因,感觉不正确:

  1. 模态流不需要从哪里呈现。现在,它假定它是在根导航器上显示的,这是错误的。
  2. 模态流程中的第一个屏幕不会自动在脚手架应用栏中显示“关闭”按钮。我的印象是,如果正确完成操作,您将免费获得它。这是正确的吗?

因此,我想我的问题是:如果我使用不是根导航器的导航器来呈现模态流,我如何获得对当前导航器的引用以消除该流?还是我采用完全不正确的方法来做到这一点?

脚注:

  1. 为简洁起见,剪切了代码示例
  2. 我正在使用iOS术语(显示和关闭),对此表示抱歉!
  3. 到目前为止,我仅在iOS模拟器上对此进行过测试
flutter architecture navigation
1个回答
0
投票

很简单。

Navigator.of(context).pop();

不要因为太用力而感到困惑。

© www.soinside.com 2019 - 2024. All rights reserved.