Flutter教程 — 路由管理与Navigator进阶使用(老油条看了都说好!!!)

简介: 在上一节我们已经讲了Flutter路由管理与Navigator基础使用,有兴趣或者对这一块还不太了解的同学可以去看看。但是仅仅这样时不够的在实际项目中这些怎么会够呢???现在让我们来看看这些骚操作…

前言:

在上一节我们已经讲了Flutter路由管理与Navigator基础使用,有兴趣或者对这一块还不太了解的同学可以去看看。

但是仅仅这样时不够的
在实际项目中这些怎么会够呢???现在让我们来看看这些骚操作...
在这里插入图片描述

详解图:

在这里插入图片描述

本节内容:

1.Navigator.pushReplacement
2.Navigator.PushAndRemove
3.Navigator.maybePop与Navigator.canPop
4.FlutterBoost (简单讲讲)详细解读敬请期待~

1.Navigator.pushReplacement(登录界面跳转)

这个东西可真奇妙,为啥呢,因为它会替换!(通过要跳转的界面把当前界面从栈中替换)

假如我们要实现一个登录跳转界面,那么登录之后,用户按返回键是无法退回到登录界面的,普通的push是做不到这一点的,我们需要使用pushReplacement。

onPressed: () {
   //打开首页,并销毁当前页
   Navigator.of(context).pushReplacementNamed('/FirstPage');
   //也可以使用以下方式
   //Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=>FirstPage()));
}

这下不就亲亲松松完成了一个最最最常用的功能嘛
在这里插入图片描述

2.Navigator.PushAndRemove(购物车付款)

这也是个非常奇妙的东西呀

假设我们从首页进入到了购物车,购物车里有个好东西,现在要付款了
在这里插入图片描述

付款完之后一般都直接跳回到首页,或者我的界面,没有购物车界面了,这下就要把购物车界面从栈里移除,减小内存.

//跳转到我的界面,并且移除所有的页面直到首页
//          Navigator.of(context).pushNamedAndRemoveUntil(
//              '/MyHomePage', ModalRoute.withName('/FirstPage'));
          Navigator.of(context).pushAndRemoveUntil(
              MaterialPageRoute(builder: (context) => MyHomePage()),
              ModalRoute.withName('/FirstPage'));

太简单了吧,我都怀疑是假的~

3.Navigator.maybePop与Navigator.canPop

Navigator.of(context).canPop()返回一个bool值,表示当前页面是否可以退出.
说实话我没用过,可能是我太菜了,能不能点个赞安慰我一下在这里插入图片描述
看看它的源码:

bool canPop() {
   assert(_history.isNotEmpty);
   return _history.length > 1 || _history[0].willHandlePopInternally;
}

[Route.isFirst], which returns true for routes for which [canPop]判断依据就是看当前路由是否处在栈中“最底部”的位置。

简单来说在首页调用maybePop()是不会退出的,如果在其它页面调用,效果和pop()一样

4.FlutterBoost

FlutterBoost 是阿里系闲鱼技术团队开源的 Flutter 插件,它可以轻松为现有原生应用程序提供 Flutter 混合集成方案。其理念是将 Flutter 像 WebView 那样来使用。FlutterBoost 帮开发者处理 Native 与 Flutter 页面的映射和跳转。

FlutterBoost 的优点

  • 官方的集成方案有诸多弊病,日志不能输出到原生端、存在内存泄漏的问题、资源冗余等等
  • FlutterBoost 的通道的封装使得 Native 调用 Flutter 、Flutter 调用 Native 的开发更加简便
  • FlutterBoost 对于页面生命周期的管理,也梳理的比较整齐
  • FlutterBoost 为阿里出品,已在闲鱼生产环境中使用,正稳定为亿级用户提供服务

需要与原生混编的小伙伴可以先了解起来,关于它的教程小T在连夜编码中.....

欢迎留言纠正 ~ 不妨给个点赞哈哈

相关文章
|
2月前
|
存储 JavaScript 前端开发
盘点主流 Flutter 状态管理库2024
状态管理是每个应用不可缺少的,本文将会盘点下主流的状态管理包。
盘点主流 Flutter 状态管理库2024
|
6月前
|
Dart Android开发 UED
带你读《深入浅出Dart》二十七、Flutter路由管理
带你读《深入浅出Dart》二十七、Flutter路由管理
|
7月前
|
存储 Dart 数据库
重识Flutter状态管理 — 探索Flutter中的状态
我遇到过很多没有了解过响应式编程框架的,或者从事后端开发,自己想用Flutter写个app玩玩的朋友,一上来,不管在哪里都用`setState`,我问为啥不用状态管理,大部分都回了一句:啥是状态管理?
|
7月前
|
存储 数据库 索引
Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)
本文介绍Flutter中如何实无线滚动(基于GetX简单状态管理而非有状态组件)
65 0
|
3月前
|
安全 Go 数据安全/隐私保护
Flutter开发笔记:Flutter路由技术
Flutter开发笔记:Flutter路由技术
283 0
|
4月前
|
Dart
Flutter状态管理:RxDart,详细介绍
Flutter状态管理:RxDart,详细介绍 RxDart是一个基于Dart语言的响应式编程库,它提供了一套用于处理异步事件序列的工具。在Flutter应用中,RxDart可以很好地用于管理应用状态。
|
4月前
|
存储 前端开发
Flutter Provider状态管理---MVVM架构实战
Flutter Provider状态管理—MVVM架构实战 在Flutter中,状态管理是一个非常重要的概念。Flutter Provider是一种状态管理的解决方案,它提供了一种简单,灵活和高效的方法来管理Flutter应用程序中的状态。本文将详细介绍Flutter Provider的使用,以及如何在MVVM架构中使用它。
135 0
|
3月前
|
BI
Flutter笔记:路由观察者
Flutter笔记:路由观察者
73 0
|
3月前
|
Linux 开发者 iOS开发
Flutter笔记:桌面端应用多窗口管理方案
Flutter笔记:桌面端应用多窗口管理方案
104 0
|
3月前
|
编解码 缓存 调度
Flutter笔记:Flutter的应用生命周期状态(lifecycleState)管理
Flutter笔记:Flutter的应用生命周期状态(lifecycleState)管理
72 0