参考地址:https://www.jianshu.com/p/b9d6ec92926f

在我们Flutter中,页面之间的跳转与数据传递使用的是Navigator.pushNavigator.pop以及Router。也是比较简单的,我们一起来使用Navigator+Router看看如何实现下面的效果。

1.打开新页面并返回:

  • Navigator.push(打开页面)
  • Navigator.pop(退出当前页面)

Navigator.push(BuildContext context, Route<T> route)

可以将当前页面转换成Router,压入由Navigator管理的路由堆栈(the stack of routes)中

Navigator.pop(BuildContext context, [ T result ]),会将当前页面对应的RouterNavigator管理的路由堆栈中移除。

2.返回数据到上一级页面:

1)将要返回的数据放入到Navigator.pop

  

//退出当前页面,返回到上一级页面
void _backCurrentPage(BuildContext context) {
print('执行了_backCurrentPage');
///只有执行了这个方法,上级页面才会收到返回的数据
Navigator.pop(context, '我是来自SecondPage的数据');
}
  • 使用Navigator.push+async+await处理返回的数据
/// async关键字声明该函数内部有代码需要延迟执行
/// 使用await会把延迟运算放入到延迟运算的队列(await)中。
void _navigateSecondPage(BuildContext context) async {
print('执行了_navigateSecondPage');
final result =
await Navigator.push(context, MaterialPageRoute(builder: (context) {
return SecondPage();
}));
print('FirstPage收到数据:$result');
}

3.替换当前路由,左上角没有返回了:

Navigator.of(context).pushReplacementNamed('/tabs');

Flutter Navigator&Router(导航与路由)的更多相关文章

  1. Router和History (路由控制)-backbone

    Router和History (路由控制) Backbone.Router担任了一部分Controller(控制器)的工作,它一般运行在单页应用中,能将特定的URL或锚点规则绑定到一个指定的方法(后文 ...

  2. 使用Angular Router导航基础

    名称 简介 Routes 路由配置,保存着那个URL对应着哪个组件,以及在哪个RouterOulet中展示组件. RouterOutlet 在HTML中标记路由内容呈现位置的占位符指令. Router ...

  3. 【共享单车】—— React后台管理系统开发手记:Router 4.0路由实战演练

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  4. 技术胖Flutter第四季-19导航父子页面的跳转返回

    技术胖Flutter第四季-19导航父子页面的跳转返回 博客地址: https://jspang.com/post/flutter4.html#toc-010 onPressed是当前按下的时候,按下 ...

  5. 技术胖Flutter第四季-20导航的参数传递和接受-1

    技术胖Flutter第四季-20导航的参数传递和接受-1 视频地址:https://www.bilibili.com/video/av35800108/?p=21 先安装一个新的插件: Awesome ...

  6. router.beforeEach、路由元信息、导航守卫与函数式编程

    一.函数的识别: 1.router.beforeEach:主函数.高阶函数.入口函数: 2.匿名参量函数:处理跳转过程中的附加逻辑 (to, from, next) => { if (to.ma ...

  7. Flutter 简介(事件、路由、异步请求)

    1. 前言 Flutter是一个由谷歌开发的开源移动应用软件开发工具包,用于为Android和iOS开发应用,同时也将是Google Fuchsia下开发应用的主要工具.其官方编程语言为Dart. 同 ...

  8. vue.js利用vue.router创建前端路由

    node.js方式: 利用node.js安装vue-router模块 cnpm install vue-router 安装完成后我们引入这个模板! 下载vue-router利用script引入方式: ...

  9. 技术胖Flutter第四季-21导航的参数传递和接受-2

    21导航的参数传递和接受-2 视频地址 https://www.bilibili.com/video/av35800108/?p=22 博客地址:https://jspang.com/post/flu ...

随机推荐

  1. AngularJs中Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.15/

    我在使用angularjs的时候报出来这个错误: Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.15/ 当时 ...

  2. vscode常用快捷键总结

    记住快捷键能够提高工作效率 Ctrl+Shift+P,F1 展示全局命令面板 Ctrl+P 快速打开最近打开的文件 Ctrl+Shift+N 打开新的编辑器窗口 Ctrl+Shift+W 关闭编辑器 ...

  3. LG5487 【模板】线性递推+BM算法

    [模板]线性递推+BM算法 给出一个数列 \(P\) 从 \(0\) 开始的前 \(n\) 项,求序列 \(P\) 在\(\bmod~998244353\) 下的最短线性递推式,并在 \(\bmod~ ...

  4. sql查询排序

        ORDER BY _column1, _column2; /* _column1升序,_column2升序 */   ORDER BY _column1, _column2 DESC; /* ...

  5. c-free gcc.exe: cannot specify -o with -c or -S and multiple compilations的解决方法

    win10上打算使用c-free,因为xp win7时代都用过,写c代码还是比较方便的,尤其是5.0版本,但是在win10上面,c-free 5.0版本没有c-free 4好用,c-free 4启动更 ...

  6. 浅谈JS高阶函数

    引入 我们都知道函数是被设计为执行特定任务的代码块,会在某代码调用它时被执行,获得返回值或者实现其他功能.函数有函数名和参数,而函数参数是当调用函数接收的真实的值. 今天要说的高阶函数的英文为High ...

  7. thrift 安装

    1.下载 去官网 https://thrift.apache.org/download 下载两个文件,下载地址 http://archive.apache.org/dist/thrift/0.9.3/ ...

  8. BZOJ 4571: [Scoi2016]美味

    二次联通门 : BZOJ 4571: [Scoi2016]美味 /* BZOJ 4571: [Scoi2016]美味 dalao们都在说这题如果没有加法balabala就可以用可持久化trie解决了 ...

  9. tensorflow serving 模型部署

    拉去tensorflow srving 镜像 docker pull tensorflow/serving:1.12.0 代码里新增tensorflow 配置代码 # 要指出输入,输出张量 #指定保存 ...

  10. AtCoder Grand Contest 016题解

    传送门 \(A\) 直接枚举最终的字母然后模拟就行了-- 就这数据范围还是别学我写的这种做法了-- const int N=105; char s[N];int las[26],mx[26],n,re ...