首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter开发(15)- 路由导航

), ) // 按钮点击执行的代码 _onBackTap(BuildContext context) { Navigator.of(context).pop(); } 1.2....) { Navigator.of(context).pop("a detail message"); } 1.3....基本跳转 我们可以通过创建一个新的Route,使用Navigator来导航到一个新的页面,但是如果在应用中很多地方都需要导航到同一个页面(比如在开发中,首页、推荐、分类页都可能会跳到详情页),那么就会存在很多重复的代码...) { Navigator.of(context).pushNamed("/detail"); } 开发中,为了让每个页面对应的routeName统一,我们通常会在每个页面中定义一个路由的常量来使用:...RaisedButton( child: Text("打开未知页面"), onPressed: () { Navigator.of(context).pushNamed("/abc"); }, ) 我们可以创建一个错误的页面

97020
您找到你想要的搜索结果了吗?
是的
没有找到

Flutter 使用Navigator进行局部跳转页面的方法

Navigator组件使用的频率不是很高,但在一些场景下非常适用,比如局部表单多页填写、底部导航一直存在,每个tab各自导航场景。...Navigator 是管理路由的控件,通常情况下直接使用Navigator.of(context)的方法来跳转页面,之所以可以直接使用Navigator.of(context)是因为WidgetsApp...那么什么情况下需要使用Navigator?...需要局部页面跳转的地方使用Navigator,如下面的场景: 头条客户端举报场景 头条客户端每一个新闻下面都有一个“叉号”,点击弹出相关信息,点击其中的局部,会在当前小窗户内跳转到举报页面,效果如下:...最终实现了局部跳转效果,只中间区域变化,其他区域不变。 Tab内跳转 还有一个典型到应用场景就Tab内跳转,效果如下: ? 底部导航一直存在,每个tab都有自己的导航器。

87411

【Flutter 实战】路由堆栈详解

RaisedButton( child: Text('A 页面'), onPressed: () { Navigator.of(context).pop(); }, ) A 页面时路由堆栈中只有...此时路由堆栈为,没有可显示的页面,应用程序将会退出或者黑屏,好的用户体验不应如此,此时可以使用 maybePop,maybePop 只路由堆栈有可弹出路由时才会弹出路由。...上面的案例 A 页面执行maybePop: RaisedButton( child: Text('A 页面'), onPressed: () { Navigator.of(context...).maybePop(); }, ) 点击后不会出现弹出路由,因为当前路由堆栈中只有 A, B页面执行maybePop,将会返回到 A 页面。...popUntil 有如下场景,入职新公司的时候,需要填写各种信息,这些信息分为不同部分,比如基本信息、工作信息、家庭信息等,这些不同模块不同页面,填写信息时可以返回一页,也可以取消,取消返回到首页

1.4K30

别在异步间隙中使用 BuildContext:为什么且如何正确处理 Flutter Context

我们将调查 Flutter 中这一关键部分的原因和方法,强调合适 context 处理的必要性,以避免潜在的错误和内存泄露。... Flutter 中,BuildContext 是一个重要的参数,用来获取挂件树中一个挂件位置信息,然后执行一个任务,比如导航到其他屏幕,展示对话框,获取主题数据等等。...此告警反对这么做,因为这可能导致我们应用程序出现意外和错误的行为。...本质,这告警就是要开发者认真考虑异步操作中如何处理 BuildContext,强调明白挂件生命周期管理的重要性,避免可能影响我们 Flutter 引用程序可靠性和性能的常见陷阱。...; var result = await navigator.of(context).pushNamed("/user_selection_page"); if(context !

20710

Flutter学习笔记:BottomNavigationBar实现多个Navigation

Navigator.ofcontext)在窗口控件树中找到Navigator,并使用它来推送新route。 你可能好奇 Navigator是从哪来的。...但是,如果我们只使用Navigator.ofcontext)来推送新路由,就会发生意想不到的情况。 当新页面出现时,整个``BottomNavigationBar```及其内容会滑动。 不酷。?...这不起作用,因为Navigator.ofcontext)找到BottomNavigatorBar本身的祖先。...我们可以独立地推送/弹出每个导航器,并且后台导航员保持他们的状态。? One more thing 如果我们Android运行应用程序,当我们按下后退按钮时,我们会发现一个有趣的现象: ?...1_qQW2iGXiWL2F1tu6cLQfwg.gif 需要注意的一点是,当我们Android推送新路线时,会从底部滑入。 相反,惯例是iOS从右侧滑入。

4.2K20

flutter路由

pushAndRemoveUntil 将具有给定名称的路由推入导航器,然后删除所有 replace 用新路由替换导航的路由 replaceRouteBelow 用新路由替换导航的路由。...)), ); } } 效果图: 错误示例: class MyApp extends StatelessWidget { @override Widget build(BuildContext..., 所以我们应该把home的那部分抽出来放另一个类; 路由传并返回 路由传参在上面那个例子已经有了,num就是我们的参数,然后显示标题上就是使用了。...这节教大家路由传并返回,创建个NewPage,接收个文本text,然后显示新页面,新页面给个返回按钮, 点击返回按钮返回并带回一串回去。...(21935): 接收到的参数:我是返回 直接点击左上角那个返回会为,这样打印出来的就是: I/flutter (21935): 接收到的参数:null 所以我们做了一个判断,不为才执行打印

1.7K20

Flutter入门-路由导航

而人们常常说起的路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。...route) //等同于 Navigator.of(context).push(Route route) 常用 api push 将给定的路由入栈,即打开新的页面,返回是一个 Future 对象...pop(BuildContext context,[ result ]) 将栈顶路由出栈,result 页面关闭返回给上一个页面的数据 maybePop 判断页面是否可以返回一页,如果可以直接返回...比如A-B-C,路由栈中存在三个页面,此时处于C,传入C,则替换B页面为指定新路由页; 示例 路由传 用于路由跳转时携带一些参数,比如打开某个新闻详情页时,我们需要携带 新闻id,这样才能具体知道显示什么...即为回传的数据 }, 发送端 Navigator.of(context).pop("我是返回的数据"); 参考资料 Flutter实战-书籍

1.2K20
领券