Flutter路由(一)
第一点:push使用
1.pushNamed——Navigator.of(context).pushNamed('routeName')
Navigator.of(context).pushNamed('/screen1'); 直接进入screen1页面(每次都将新建一个新的页面)
2.pushReplacementNamed——Navigator.of(context).pushReplacementNamed('routeName')
指把当前页面在栈中的位置替换成跳转的页面(替换导航器的当前路由,通过推送路由[routeName]),当新的页面进入后,之前的页面将执行dispose方法。
即比如当前从页面1进入页面2,在页面2使用 Navigator.of(context).pushReplacementNamed('/screen3');进入页面3,当进入了页面3后,页面2将执行dispose方法,此时在页面3返回时,会回到页面1.
使用情况:例如 从SplashScreen到HomeScreen。它应该只显示一次,用户不应该再从主屏幕回到它。在这种情况下,由于我们将要进入一个全新的屏幕, 我们可能想要使用这个方法来实现它的enter animation属性。
3.pushReplacement——Navigator.pushReplacement( context, MaterialPageRoute(builder: (BuildContext context) => screen4()))
pushReplacement只需new对应页面即可,而且可以传递 参数(传参方式类似于本文后续所说的传递方法)。和pushReplacementNamed只是路由的传递有差别,pushReplacementNamed的是传递路由名称(页面对应的名称,需在入口定义(本文第一点))
4.popAndPushNamed——Navigator.popAndPushNamed(context, 'routeName')
指将当前页面pop,然后跳转到制定页面(将当前路由弹出导航器,并将命名路由推到它的位置。)
5.pushNamedAndRemoveUntil
5.1.Navigator.of(context).pushNamedAndRemoveUntil('/screen4', (Route<dynamic> route) => false)
指将制定的页面加入到路由中,然后将其他所有的页面全部pop, (Route route) => false将确保删除推送路线之前的所有路线。 这时候将打开一个新的screen4页面
5.2.Navigator.of(context).pushNamedAndRemoveUntil('/screen4', ModalRoute.withName('/screen1'))
5.4.Navigator.pushAndRemoveUntil( context, MaterialPageRoute(builder: (BuildContext context) => new screen4()), ModalRoute.withName('/')
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (BuildContext context) => Screen4()),
(Route<dynamic> route) => false,
);
这时候进入4后。4将成为唯一的一个页面。其他页面都将pop出栈,这个跟上述pushNamedAndRemoveUntil也一致。
6.popUntil——Navigator.popUntil(context, ModalRoute.withName('/screen2'))
pop
1.Navigator.of(context).maybePop()
maybePop 会自动进行判断,如果当前页面pop后,会显示其他页面,不会出现问题,则将执行当前页面的pop操作 否则将不执行。
2.Navigator.of(context).canPop()
canPop 判断当前页面能否进行pop操作,并返回bool值
3.Navigator.of(context).pop()
直接退出当前页面
https://github.com/mingfeng002/yinl/tree/master/yinll_flutter/lib/route_demo
Flutter路由(一)的更多相关文章
- Flutter路由的跳转、动画与传参(最简单)
跳转 命名路由 在文件构建时先设置路由参数: new MaterialApp( // 代码 routes: { "secondPage":(BuildContext context ...
- Flutter路由跳转及参数传递
本文要介绍的知识点 用路由推出一个新页面 打开新页面时,传入参数 参数的回传 路由 做Android/iOS原生开发的时候,要打开一个新的页面,你得知道你的目标页面对象,然后初始化一个Intent或者 ...
- Flutter路由_fluro引入配置和使用
Flutter本身提供了路由机制,作个人的小型项目,完全足够了.但是如果你要作企业级开发,可能就会把入口文件变得臃肿不堪.而再Flutter问世之初,就已经了企业级路由方案fluro. flutter ...
- Flutter路由导航Navigator
第一点:push使用 1.pushNamed——Navigator.of(context).pushNamed('routeName'); 此种方法只是简单的将我们需要进入的页面push到栈顶,以此来 ...
- flutter 路由动画
import 'package:flutter/material.dart'; import 'package:flutter_app/pages/FirstPage.dart'; void main ...
- Flutter 路由传入中文参数报错无法push问题
flutter自带路由传递参数和使用第三方库fluro路由传递参数都可以通过一下方式解决问题 String jsonString = json.encode(mapValue); var jsons ...
- Flutter路由跳转父级页面向子页面传参及子页面向父级页面传参
Flutter中页面通过路由跳转传参主要分两种,一种是通过push()跳转时根据设定的参数进行传参,另一种是通过pop()返回时进行传参. 父级页面向子页面push()传参 假设从A页面跳到B页面可能 ...
- Flutter 路由 页面间跳转和传参 返回
Navigator Navigator用来管理堆栈功能(即push和pop),在Flutter的情况下,当我们导航到另一个屏幕时,我们使用Navigator.push方法将新屏幕添加到堆栈的顶部.当然 ...
- Flutter路由管理
第一点:push使用 1.pushNamed——Navigator.of(context).pushNamed('routeName'); 此种方法只是简单的将我们需要进入的页面push到栈顶,以此来 ...
随机推荐
- dcoker_ubuntu中安装python2.7
1.apt-get update 2.apt-get install python2.7 或 1.sudo apt-get update 2.sudo apt-get install python2. ...
- liunx和aix 系统开启ftp服务
AIX开启ftp服务: 1.ftp服务的守护进程是否存在 #lssrc -s inetd 2.ftp服务的开启与关闭 #startsrc -t ftp #stopsrc -t ftp 3.ftp服务是 ...
- 火狐插件simple timer 定时打开指定网页
今天我要介绍的是火狐浏览器一款插件:Simple Timer,该插件是火狐一个可以添加计时器和定时提醒功能插件,该插件的主要作用就是当你的设置在某一个时刻提醒时,插件会自动弹出通知,并且自动打开你想要 ...
- windows静态路由
本机:192.168.1.10 本机网关:192.168.1.254 目的IP:188.1.1.10 指定网关:192.168.1.107 最多跳数:10跳 route -p add 188.1 ...
- JavaScript入门学习之一——初级语法
JavaScript是前端编辑的一种编程语言(不同于html,html是一种标记语言),所以和其他的编程语言一样,我们将会从下面几点学习 基础语法 数据类型 函数 面向对象 JavaScript的组成 ...
- 人人商城返回Json格式的数据
人人商城返回Json格式的数据 1.找到该插件对应的 core/mobile 路径 2.新建一个 api.php 文件 <?php header('Content-Type:applicatio ...
- Python 模块Ⅲ
globals() 和 locals() 函数 根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字. 如果在函数内部调用 locals(),返回的 ...
- JavaScript的数组API函数
㈠数组转字符串 ⑴String(arr):将arr中的每个元素转为字符串,用逗号分隔 固定套路:对数组拍照:用于鉴别是否数组被修改过 ⑵arr.join("连接符"):将a ...
- python 正则表达式实例:
#!/usr/bin/python import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.* ...
- Linux命令-文件管理(四)
Linux命令-文件管理 Linux slocate命令 Linux slocate命令查找文件或目录. slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息. 语法 slocate ...