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在连夜编码中.....

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

相关文章
|
4天前
|
API 网络架构
一文带你了解 Flutter 路由
一文带你了解 Flutter 路由
|
1月前
|
Go 网络架构 开发者
Flutter &鸿蒙next中的路由使用详解【基础使用】
本文介绍了 Flutter 路由系统的使用方法,包括基本路由、命名路由、参数传递、返回参数和动态路由。通过 `Navigator` 类实现页面跳转,支持简单和复杂参数的传递,并可通过 `onGenerateRoute` 实现更灵活的动态路由管理。示例代码展示了如何在实际项目中应用这些技术,帮助开发者构建清晰、易于维护的导航结构。
87 1
|
2月前
|
UED 开发者
flutter:获取对象&路由管理 (四)
本文介绍了Flutter中如何通过Context获取状态对象、使用GlobalKey获取状态对象、基本的路由管理、路由传值、命名路由、返回根路由以及点击图标跳转的方法。示例代码展示了如何在应用中实现这些功能,包括页面跳转、传递参数和返回上一页等操作。
|
5月前
|
开发框架 Dart Java
Flutter入门进阶之旅(一)-初识Flutter
Flutter 的目标是用来创建高性能、高稳定性、高帧率、低延迟的 Android 和 iOS 应用。并且开发出来的应用在不同的平台用起来跟原生应用具有一样的体验。不同的平台的原生体验应该得到保留,让该应用看起来同整个系统更加协调。不同平台的滚动操作、字体、图标 等特殊的特性 应该和该平台上的其他应用保持一致,让用户感觉就像操作原生应用一样。
77 1
|
5月前
|
容器
flutter 布局管理【详解】
flutter 布局管理【详解】
45 3
|
5月前
|
Dart 搜索推荐
Flutter入门进阶之旅(二)Hello Flutter
好像几乎我们学习或者掌握任何一门编程语言都是Hello word开始的,本篇博文做为Flutter入门进阶的第一篇分享,我们也从最简单的Hello world开始,至于Flutter开发环境的配置,跟关于Dart语言的介绍,不是该专栏要讲解的内容,我就不详细做介绍了,读者可自行google或者百度了解一下。
52 0
|
5月前
|
Android开发
Flutter路由跳转参数处理小技巧
Flutter路由跳转参数处理小技巧
49 0
|
5月前
flutter的状态管理学习
flutter的状态管理学习
|
7月前
|
Dart IDE API
Flutter Riverpod 状态管理上手技巧分享
时代在进步 Riverpod 作为一个优秀的状态管理,猫哥也开始做些技术调研。今天会写两个例子,计数器、拉取数据。
169 1
Flutter Riverpod 状态管理上手技巧分享
|
7月前
|
前端开发 开发者 UED
【Flutter前端技术开发专栏】Flutter中的图标、字体与样式管理
【4月更文挑战第30天】本文介绍了在Flutter中管理图标、字体和样式的做法。Flutter提供`Icons`类用于内置矢量图标,支持第三方图标库如FontAwesome。自定义字体可通过添加字体文件至`assets`目录并配置`pubspec.yaml`,然后使用`TextStyle`设置。借助`ThemeData`,开发者能统一管理应用主题样式,局部样式可覆盖全局。通过集中管理样式,提升代码复用性和应用一致性。
188 0
【Flutter前端技术开发专栏】Flutter中的图标、字体与样式管理