路由
做Android/iOS原生开发的时候,要打开一个新的页面,你得知道你的目标页面对象,然后初始化一个Intent或者ViewController,再通过startActivity或者pushViewController来推出一个新的页面,不能跟web一样,直接丢一个链接地址就跳转到新的页面。当然,可以自己去加一个中间层来实现这些功能。
Flutter里面是原生支持路由的。Flutter的framework提供了路由跳转的实现。我们可以直接使用这些功能。
Flutter路由介绍
Flutter里面有路由支持所有的路由场景,push、pop页面,页面间的参数传递等等。flutter里面的路由可以分成两种,一种是直接注册,不能传递参数。另一种要自己构造实例,可以传递参数。我们暂时把它们规为静态路由和动态路由。
跳转
命名路由
在文件构建时先设置路由参数:
new MaterialApp( // 代码 routes: { "secondPage":(BuildContext context)=>new SecondPage(), }, );
在需要做路由跳转的时候直接使用:
Navigator.pushNamed(context, "secondPage");
构建路由
Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){ return new SecondPage(); }))
区别
以上两种路由的优缺点十分明显:
动画
构建动画
先在构建一个动画效果,如:
static SlideTransition createTransition( Animation<double> animation, Widget child) { return new SlideTransition( position: new Tween<Offset>( begin: const Offset(1.0, 0.0), end: const Offset(0.0, 0.0), ).animate(animation), child: child, ); }
以上动画意思为跳转时新页面从右边划入,返回时向右边划出。
引入动画
Navigator.push<String>( context, new PageRouteBuilder(pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) { // 跳转的路由对象 return new Wechat(); }, transitionsBuilder: ( BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child, ) { return MyStatefulWidgetState .createTransition(animation, child); }))
传参
跳转时
传
前面我们说过,flutter的命名路由跳转无法传参。因此,我们只能使用构建路由的方式传参:
Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){ return new SecondPage( title:'此处为参数', name:'此处为名字参数' ); }))
收
class SecondPage extends StatefulWidget { String title; String name; Wechat({ Key key, this.title, this.name }) : super(key: key); @override State<StatefulWidget> createState() { return new MyStatefulWidgetState(); } }
返回时
传
当触发路由返回的事件时,传参是十分简单的。和跳转时的方式一样,甚至更简单,只需要:
Navigator.of(context).pop('这个是要返回给上一个页面的数据');
收
但是,在接受返回时的数据需要改造前面触发跳转时的路由:
// 命名路由 Navigator.pushNamed<String>(context, "ThirdPage").then( (String value){ //处理代码 }); // 构建路由 Navigator.push<String>(context, new MaterialPageRoute(builder: (BuildContext context){ return new ThirdPage(title:"请输入昵称"); })).then( (String result){ //处理代码 });
以上就是Flutter路由的跳转、动画以及传参的相关方法,依葫芦画瓢即可轻松应对。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍VueJs路由跳转——vue-router的使用详解,包括了VueJs路由跳转——vue-router的使用详解的使用技巧和注意事项,需要的朋友参考一下 对于单页应用,官方提供了vue-router进行路由跳转的处理,本篇主要也是基于其官方文档写作而成。 安装 基于传统,我更喜欢采用npm包的形式进行安装。 当然,官方采用了多种方式进行安装,包括bower,cdn等。 基本用法 在H
本文向大家介绍Vue路由跳转问题记录详解,包括了Vue路由跳转问题记录详解的使用技巧和注意事项,需要的朋友参考一下 最近项目上需要用Vue用来做app,在Vue中使用路由时遇到下面的问题。 路由设置如下: 其中/tab是根地址,有3个子地址,3个子地址层级为:LayoutList => LayoutView => LayoutDetail 正常情况:假设当前路由为/tab/layoutList,需
本文向大家介绍AngularJS 路由详解和简单实例,包括了AngularJS 路由详解和简单实例的使用技巧和注意事项,需要的朋友参考一下 AngularJS 路由 本章节我们将为大家介绍 AngularJS 路由。 AngularJS 路由允许我们通过不同的 URL 访问不同的内容。 通过 AngularJS 可以实现多视图的单页Web应用(single page web application
本文向大家介绍Flutter 局部路由实现详解,包括了Flutter 局部路由实现详解的使用技巧和注意事项,需要的朋友参考一下 Flutter是借鉴React的开发思想实现的,在子组件的插槽上,React有this.props.children,Vue有<slot></slot>。 当然Flutter也有类似的Widget,那就是Navigator,不过是以router的形式实现(像<router
本文向大家介绍vue2.0项目实现路由跳转的方法详解,包括了vue2.0项目实现路由跳转的方法详解的使用技巧和注意事项,需要的朋友参考一下 一、安装 1、安装路由vue-router: npm install vue-router vue项目的依赖文件node_modules存在vue-router依赖,说明安装成功 2、vue项目引入vue-ruoter: 二、应用 1、路径配置(页面跳转):
route(Object) 此为一个路由跳转方法,内部是对uni多个路由跳转api的封装,更方便使用 Object参数说明: 参数名 类型 默认值 是否必填 说明 type String navigateTo false navigateTo或to对应uni.navigateTo,redirect或redirectTo对应uni.redirectTo,switchTab或tab对应uni.swit