参考地址: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. Sharding-JDBC(二)2.0.3版本实践

    目录 一.Sharding-JDBC依赖 二.分片策略 1. 标准分片策略 2. 复合分片策略 3. Inline表达式分片策略 4. 通过Hint而非SQL解析的方式分片的策略 5. 不分片的策略 ...

  2. AI文本审核垃圾内容

    今天无意获得一个AI的文本审核的API,基于深度学习及大规模样本训练的人工智能文本审核技术,一站式准确  检测识别文本中夹杂的色情.推广.辱骂.违禁违法等垃圾内容,净化 网络环境,为您的应用提供更可靠 ...

  3. maven中profile的使用

    转载:https://blog.csdn.net/java_collect/article/details/83870215 前言       在开发过程中,我们的项目会存在不同的运行环境,比如开发环 ...

  4. [Schematics] 0. Schematics "Hello World"

    1. Install schematics cli: npm i -g @angular-devkit/schematics-cli@latest 2. Then run schematics to ...

  5. 使用 HttpClient 进行 Post 方式通信

    1.TestPost.java package testhttpclient; import java.io.IOException;import java.util.ArrayList;import ...

  6. 【一起来烧脑】一步学会CSS3体系

    [外链图片转存失败(img-yfi1VPyy-1563434266398)(https://upload-images.jianshu.io/upload_images/11158618-fc8784 ...

  7. golang-切片copy

    package main import ( "fmt" ) func main() { fmt.Println("-------------") data := ...

  8. 备用shell管理方案之butterfly+nginx+https

    安装butterfly+nginx https 1. 安装butterfly yum install python36 python36-pip python36-devel -y pip insta ...

  9. Codeforces Round #604 (Div. 1) - 1C - Beautiful Mirrors with queries

    题意 给出排成一列的 \(n\) 个格子,你要从 \(1\) 号格子走到 \(n\) 号格子之后(相当于 \(n+1\) 号格子),一旦你走到 \(i+1\) 号格子,游戏结束. 当你在 \(i\) ...

  10. 新建Class文件时,添加作者版权注释声明

    以安装路径C盘为例,各版本路径如下: VS2015:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTempla ...