Trầ*_*Tâm 10 navigation flutter
中的NavigatorState类Flutter#navigator.dart有 2 个具有类似行为的方法。FlutterpushReplacementNamed和popAndPushNamedFlutter 有什么区别?
pushReplacementNamed
通过推送名为 [routeName] 的路线替换导航器的当前路线,然后在新路线完成动画处理后处理之前的路线。
popAndPushNamed
从导航器弹出当前路线并在其位置推送命名路线。
A R*_*A R 27
如果您对数据结构有任何了解,那么您就会了解堆栈。如果您甚至有基本的知识stacks,那么您就知道push和pop。
如果不这样做,推送是将元素添加到元素堆栈的顶部,弹出是从同一堆栈中删除顶部元素。
因此,在 Flutter 的情况下,当我们导航到另一个屏幕时,我们使用push方法和Navigator小部件将新屏幕添加到堆栈顶部。自然地,这些pop方法将从堆栈中删除该屏幕。
因此,让我们转到 Sample_Project的代码库,看看如何从Screen1 to Screen2. 您可以通过运行示例应用程序来试验这些方法。
new RaisedButton(
onPressed:(){
Navigator.of(context).pushNamed('/screen2');
},
child: new Text("Push to Screen 2"),
),
Run Code Online (Sandbox Code Playgroud)
那很短。
那确实是。在pushNamed方法的帮助下,我们可以导航到任何在main.dart. 我们称他们namedRoute为参考。这种方法的用例非常简单。简单地导航。
弹出它
现在,当我们想要摆脱上次访问的屏幕时,Screen2在这种情况下,我们需要pop使用 pop 方法从导航器的堆栈中路由。
Navigator.of(context).pop();
Run Code Online (Sandbox Code Playgroud)
请记住,这行代码包含在您的onPressed方法中。
使用 Scaffold 时,通常不需要显式弹出路由,因为 Scaffold 会自动向其 AppBar 添加一个“后退”按钮,该按钮会Navigator.pop()在按下时调用。即使在 Android 中,按下设备的后退按钮也会这样做。但是,对于其他用例,例如当用户单击“取消”按钮时弹出 AlertDialog,您可能需要此方法。
用例:pushReplacementNamed
当用户成功登录,并且现在处于“DashboardScreen可能”状态时,您无论如何都不希望用户返回LoginScreen。所以登录路由应该完全被仪表板路由取代。另一个例子是HomeScreen从SplashScreen. 它应该只显示一次,用户不应该HomeScreen再次返回它。在这种情况下,由于我们要进入一个全新的屏幕,我们可能希望使用此方法为其输入动画属性。
用例:popAndPushNamed
假设您正在构建一个购物应用程序,该应用程序显示其中的产品列表,ProductsListScreen并且用户可以在FiltersScreen. 当用户单击Apply Changes按钮时,FiltersScreen应该弹出并推回到ProductsListScreen具有新过滤器值的 。这里的退出动画属性popAndPushNamed看起来更合适。
pushReplacementNamed will execute the enter animation and popAndPushNamed will execute the exit animation.
Navigator.of(context).pushReplacementNamed('/screen4');
//and
Navigator.popAndPushNamed(context, '/screen4');
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问Pooja_Bhaumik 的此站点
enc*_*bos 22
只是一个简短的答案。
区别仅在于动画flutter 执行。
用户 AR 在他的回答中也发布了这个。
pushReplacementNamed 将执行进入动画,popAndPushNamed 将执行退出动画。
| 归档时间: |
|
| 查看次数: |
15466 次 |
| 最近记录: |