Flutter 路由 页面间跳转和传参 返回
Navigator
Navigator用来管理堆栈功能(即push和pop),在Flutter的情况下,当我们导航到另一个屏幕时,我们使用Navigator.push方法将新屏幕添加到堆栈的顶部。当然,这些pop方法会从堆栈中删除该屏幕。
在push的时候使用自定义方法构建一个路由
Navigator.push(
context,
MaterialPageRoute(builder:(context) => new InfoPage(product: products[index]))
);
这种方式可以传递参数。
使用Navigator的pop返回可返回上一级,并携带一个参数
Navigator.pop(context,'携带参数');
push和pushNamed
push与pushNames运行效果相同,只是接口的调用方式不同, 都是将一个界面压入栈中. 区别在于, push是亲手把界面扔入栈中, 而pushNames则是通过点名的方式通过router让界面自己进入栈中
// push的调用方法
Navigator.push(context, new MaterialPageRoute(
builder: (context) {
return Scaffold(
appBar: AppBar(
title: Text('我是新的界面'),
)
);
}
)); // pushNamed的调用方法
// 先在Router上定义Page;
routes: <String, WidgetBuilder> {
'/xiaoming': (_) => new XiaoMingPage(),
}
...
Navigator.pushNamed(context, '/XiaoMingPage');
实例地址:https://www.cnblogs.com/joe235/p/11242354.html
Navigator.of(context)..pop()..pop();
替换路由:
比如A页面点击注册,跳到B页面,B页面点击下一步跳到C页面,C页面点击完成跳回A页面。
在B页面点击下一步的时候,使用替换路由跳到C页面,这时如果点击左上角返回按钮,直接返回到A页面。
Navigator.of(context).pushReplacementNamed('/registerSecond'); //替换路由
子页面向父级页面pop()传参
返回数据的方式:
Navigator.pop(context,'xxx'); //xxx就是返回的参数
pop()传参是当页面B返回到页面A时,页面A通过.then()接收,代码如下:
Navigator.push(
context,
MaterialPageRoute(builder: (BuildContext context){
return PageB(
userName: '张三',
userAge: '18岁',
);
})).then((userInfo){
setState(() {
backResult = userInfo;
});
});
在B页面中直接把需要传的参数放入pop()中即可,代码如下:
String userInfo = '对不起,今天已经打过卡了!';
Navigator.of(context).pop(userInfo);
直接返回根,主页面:
//表示把前面导航置为空,记得要引入IndexPage页
Navigator.of(context).pushAndRemoveUntil(
new MaterialPageRoute(builder:(context) => new IndexPage()),
(route) => route == null
);
返回BottomNavigationBarItem指定页面:
首先要修改IndexPage页
class IndexPage extends StatefulWidget {
final index; //增加index参数
IndexPage({Key key,this.index = }) : super(key: key); //不传默认0
_IndexPageState createState() => _IndexPageState(this.index);
}
class _IndexPageState extends State<IndexPage> {
_IndexPageState(index){ //增加构造函数
this.currentIndex = index;
}
//int currentIndex = 0; //当前索引
int currentIndex; //当前索引
}
当前代码页:
//返回指定tab页
Navigator.of(context).pushAndRemoveUntil(
new MaterialPageRoute(builder:(context) => new IndexPage(index:)),
(route) => route == null //表示把前面导航置为空,要引入IndexPage页
);
Flutter 路由 页面间跳转和传参 返回的更多相关文章
- flutter页面间跳转和传参-Navigator的使用
flutter页面间跳转和传参-Navigator的使用 概述 flutter中的默认导航分成两种,一种是命名的路由,一种是构建路由. 命名路由 这种路由需要一开始现在创建App的时候定义 new M ...
- spring mvc controller间跳转 重定向 传参(转)
spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ...
- spring mvc controller间跳转 重定向 传参 (转)
转自:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架contr ...
- Spring Mvc Controller间跳转 重定向 传参 (转)
原文链接:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架con ...
- spring mvc controller间跳转 重定向 传参
http://blog.csdn.net/jackpk/article/details/19121777/
- (day68)Vue-CLI项目、页面跳转和传参、生命周期钩子
目录 一.Vue-CLI (一)环境搭建 (二)项目的创建 (三)项目目录结构 (四)Vue组件(.vue文件) (五)全局脚本文件main.js(项目入口) (六)Vue请求生命周期 二.页面跳转和 ...
- 微信小程序开发:学习笔记[8]——页面跳转及传参
微信小程序开发:学习笔记[8]——页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
<script src="jquery.min.js" type="text/javascript"></script> <scr ...
- app之间的跳转和传参问题
app 之间跳转和传参: 首先 创建2个app formApp (需要跳转到另外app的项目) toApp(被跳转的项目) 一:在toApp 项目中的操作: 1:创建URLSchemes ...
随机推荐
- 边学边体验django--模型
步骤: 1.选定数据库,然后修改 settings.py 中的 DATABASES配置 实验过了sqlite3. 应该是这个样子的: 2. 创建app, 建立数据表模型. python manage. ...
- 自制tomcat镜像
1.编写dockerfile FROM centos MAINTAINER raygift@qq.com # 安装vim RUN yum -y install vim net-tools ENV BA ...
- parents()和parent()
$("").parent().parent() //父元素的父元素 $("").parents("tr") // 祖先元素 找到tr
- Comet OJ - Contest #2 (D 错综的光影所迷惑的思念是) 容斥计数
题意:给定一颗 $n$ 个节点的树,定义 $dis(x,y)$ 为树上点 $x$ 到 $y$ 的路径经过的边数. 定义一个点集 $S$ 的 $f(S)$ 为 $f(S)=max\left \{dis( ...
- kill/xkill/killall/pkill/pidof
pidof 杀死进程的关键是找到进程id,杀错进程id是异常灾难, 使用ps -ef|grep 可以查看到相关进程的pid及ppid 可以直接kill掉ppid,其子进程也都会被杀死 也可以使用pid ...
- c实现队列
使用链表实现队列的入队和出队 #include <iostream> #include <stdio.h> #include <string.h> #include ...
- 1635:【例 5】Strange Way to Express Integers
#include<bits/stdc++.h> #define ll long long using namespace std; ll n,m,a,lcm,now; bool flag; ...
- sql server解锁表
EXEC sp_who active --看哪个引起的阻塞,blk blk<>0 --解锁表declare @spid intSet @spid = 274 --锁表进程declare @ ...
- Linux监控工具介绍系列——iostat
文章转自:https://www.cnblogs.com/ghj1976/p/5691857.html Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iost ...
- php 图片格式转换-亲测ok
代码如下 /** * 图片格式转换 * @param string $image_path 文件路径或url * @param string $to_ext 待转格式,支持png,gif,jpeg,w ...