返回顶部
首页 > 资讯 > 移动开发 >Flutter 路由插件fluro的使用
  • 537
分享到

Flutter 路由插件fluro的使用

2024-04-02 19:04:59 537人浏览 八月长安
摘要

目录fluro的使用方法 路由处理器Handler 使用示例 页面跳转 运行效果 前面两篇文章我们介绍了Flutter 的原生导航器 Navigator 实现页面跳转,路由及路由拦

前面两篇文章我们介绍了Flutter 的原生导航器 Navigator 实现页面跳转,路由及路由拦截的使用,具体可以参考之前的文章:

//www.jb51.net/article/215167.htm

//www.jb51.net/article/214856.htm

使用原生的路由基本上能够满足大部分需求,但如果想要对页面做类似浏览器 url 那样的路由,或者控制页面跳转的转场动画,那么原生的路由需要做不少的改造。在 pub 上,有优秀的路由插件 fluro 解决这类问题。

fluro的使用方法

fluro 的使用步骤比较简单,分为下面三个步骤:

  • 构建FluroRouter路由实例,一个应用一个实例即可;
  • 定义路由路径的处理器(Handler),用于匹配不同路由路径的处理方法。
  • 在 MaterialApp 中把 onGenerateRoute设置为 FluroRouter.generator方法来构建系统路由。

需要注意的是,Fluro 默认会把路径“/”当做根目录,因此必须定义根目录的 Handler。另外对于路由不存在的情况,可以设置FluroRouter.notFoundHandler定义错误路由处理器。

路由处理器Handler

fluro 的关键实现是 Handler,Handler 的定义如下:


class Handler {
  Handler({this.type = HandlerType.route, required this.handlerFunc});
  final HandlerType type;
  final HandlerFunc handlerFunc;
}

构造函数有两个属性,一个是 HandlerType 枚举,分为 route和 function 两个值,其中用于路由的是 route,也是默认值。handlerFunc是必传的,这是响应路由的一个方法,需要返回一个 Widget,以便跳转到对应的页面。


typedef Widget? HandlerFunc(
    BuildContext? context, Map<String, List<String>> parameters);

HandlerFunc接收上下文 context,以及携带了路由参数,这个参数是一个Map,对应路由路径的多个路由参数。例如/dynamic/:id 路由,如果实际路由为/dynamic/1?event=a&event=b,则 parameters 的格式如下:


{
  "id": ["1"],
  "event": ["a", "b"]
}

需要注意路由参数的数据类型全部是String 类型,通过这个 Handler,可以将路由参数传递到下级页面。

使用示例

我们为了统一管理路由,定义一个类 RouterManager,里面的属性均为静态成员,以便直接通过类访问,而无需创建示例。当然考虑封装性,也可以做成单例模式。需要注意,FluroRouter 只能初始化一次,否则会导致热重载报错提示路由已经被定义。我们把上两篇的路由跳转替换为fluro 跳转,RouterManager 的代码如下:


//省略 import

class RouterManager {
  static String splashPath = '/';
  static String loginPath = '/login';
  static String homePath = '/home';
  static String dynamicPath = '/dynamic';
  static String dynamicDetailPath = '$dynamicPath/:id';

  static FluroRouter router;

  static void initRouter() {
    if (router == null) {
      router = FluroRouter();
      defineRoutes();
    }
  }

  static var loginHandler =
      Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
    return LoginPage();
  });

  static var dynamicDetailHandler =
      Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
    return DynamicDetailPage(params['id'][0]);
  });

  static var splashHandler =
      Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
    return Splash();
  });

  static var homeHandler =
      Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
    return AppHomePage();
  });

  static var notFoundHandler =
      Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
    return NotFound();
  });

  static void defineRoutes() {
    router.define(splashPath, handler: splashHandler);
    router.define(homePath, handler: homeHandler);
    router.define(loginPath, handler: loginHandler);
    router.define(dynamicDetailPath, handler: dynamicDetailHandler);
    router.notFoundHandler = notFoundHandler;
  }
}

实际只需要调用 RouterManager.initRouter 方法即可完成路由的初始化,这个需要在 main.dart 的 MaterialApp 中完成,代码如下。与之前的代码相比,不再需要设置navigationKey参数和 initialRoute参数,只是需要在 build 方法里调用初始化路由的方法。


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    RouterManager.initRouter();
    return MaterialApp(
      //...
      onGenerateRoute:
          RouterManager.router.generator,
    );
  }
}

页面跳转

页面跳转调用有多种形式,本例我们用到了三种,分别是:

  • 清除路由堆栈跳转:即跳转后的页面作为根页面(没有返回按钮),这种适合闪屏页跳到首页。代码如下:

RouterManager.router.navigateTo(context, RouterManager.homePath, clearStack: true);
  • 普通跳转:无参数直接跳转,代码如下:

RouterManager.router.navigateTo(context, RouterManager.loginPath);
  • 带参数跳转:路由路径携带参数,和普通跳转类似,只是拼接了路径参数和 query 参数:

RouterManager.router.navigateTo(context, '${RouterManager.dynamicPath}/$id?event=a&event=b')

运行效果

我们将闪屏页跳转到首页,动态跳转到详情页,以及登录页和404页面进行了更换,运行效果如下图所示。注意看整个转场方式的不同,正常的转场切换是从底部到顶部弹出,但404是从左到右弹出(和原生的 push 一样)。这个后续可以在 Handler 里调整或者在路由跳转的时候定义转场动画,我们下一篇再来介绍这方面的使用。

以上就是Flutter 路由插件fluro的使用的详细内容,更多关于Flutter 路由插件fluro的资料请关注编程网其它相关文章!

--结束END--

本文标题: Flutter 路由插件fluro的使用

本文链接: https://lsjlt.com/news/128792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flutter 路由插件fluro的使用
    目录fluro的使用方法 路由处理器Handler 使用示例 页面跳转 运行效果 前面两篇文章我们介绍了Flutter 的原生导航器 Navigator 实现页面跳转,路由及路由拦...
    99+
    2024-04-02
  • Flutter路由管理插件fluro使用简介
    前面两篇文章我们介绍了Flutter 的原生导航器 Navigator 实现页面跳转,路由及路由拦截的使用,具体可以参考之前的文章: Flutter页面路由及404路由拦截实现 Fl...
    99+
    2024-04-02
  • Flutter超好用的路由库-fluro
    文章目录 fluro的介绍fluro简介安装和导入路由配置导航到路由参数传递 fluro的典型使用创建路由管理类代码解释例子小结 初始化路由导航到路由 总结 fluro的介...
    99+
    2023-09-25
    flutter fluro 路由 单例模式 android
  • Flutter路由之fluro的配置及跳转
    目录1、pubspec.yaml导包,注意格式~ 2、新建路由类,改类是定义页面的路径,然后将页面handler和路径设置到路由中 3、新建router_handler.dart,处...
    99+
    2024-04-02
  • Flutter路由框架Fluro使用教程详细讲解
    目录1.Navigator使用简介2.fluro1.配置2.使用方法3.路由拦截3.封装1.Navigator使用简介 使用Flutter 的Navigator 导航器可以实现页面的...
    99+
    2022-11-13
    Flutter路由框架Fluro Flutter Fluro
  • Flutter路由fluro引入配置和使用的具体方法
    目录flutter_fluro简介 引入fluro 初始化Fluro 编写rotuer_handler 配置路由 把Fluro的Router静态化 把路由注册/注入到顶层 在首页使用...
    99+
    2024-04-02
  • 如何使用路由框架Fluro
    小编给大家分享一下如何使用路由框架Fluro,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Flutter应用开发过程中,除了使用Flutter官方提供的路由外,...
    99+
    2023-06-04
  • flutter的导航和路由如何使用
    这篇“flutter的导航和路由如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“flutter的导航和路由如何使用”文...
    99+
    2023-07-04
  • vue中如何使用vue-route路由插件
    本篇文章给大家分享的是有关vue中如何使用vue-route路由插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  1.vue-Router...
    99+
    2024-04-02
  • flutter的导航和路由使用示例详解
    目录导航和路由使用Navigator导航命名路由命名路由的局限使用路由Router同时使用Router和Navigator深度链接 Deep linking在 Android 上启用...
    99+
    2022-12-29
    flutter 导航路由 flutter 路由
  • react项目中如何使用插件配置路由
    本篇内容介绍了“react项目中如何使用插件配置路由”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react路由中没有安全守卫推荐使用插件完...
    99+
    2023-07-05
  • Flutter 使用fluro的转场动画进行页面切换
    目录转场形式 设定页面默认转场方式 跳转时指定转场方式 总结 在 fluro 中,定义路由处理器 Handler 时可以指定该页面的默认转场形式,或者在使用 navigateTo 方...
    99+
    2024-04-02
  • 详解Flutter的路由导航
    目录Flutter 的路由导航 默认路由 页面跳转并传递参数 总结 Flutter 的路由导航 路由管理或导航管理:从一个页面平滑地过渡到另一个页面,我们需要有一个统一的机制来管理...
    99+
    2024-04-02
  • flutter 路由机制的实现
    目录实现基础 _routeNamed _flushHistoryUpdates add push pop remove 总结 整个 flutter 应用的运行都只是基于原生...
    99+
    2024-04-02
  • Flutter app页面路由以及路由拦截的实现
    目录为什么要使用路由 Flutter路由介绍 页面结构与逻辑 实现关键代码 页面路由跳转 为什么要使用路由 在之前我们的代码中,页面跳转使用的代码如下所示: Navigato...
    99+
    2024-04-02
  • Flutter的路由router-页面跳转
    文章目录 概念介绍基本路由(Basic Routing)跳转到某个页面弹出页面 命名路由(Named Routing)第三方路由管理库(Third-Party Routing Libr...
    99+
    2023-09-20
    flutter 路由 router 页面跳转 intent
  • Android使用Flutter实现录音插件
    目录安卓部分手动注册Android和Dart的通讯安卓录音Dart module部分iOS部分手动注册插件iOS插件Dart调用部分原生提供功能,Dart module 通过 met...
    99+
    2022-11-13
    Android Flutter录音 Android 录音功能
  • Flutter 常用插件汇总
    目录DIO网络请求框架url_launcher系统应用跳转flutter_easyrefresh上下拉刷新flutter_swiper 轮播组件catcher 异常捕获cached_...
    99+
    2024-04-02
  • Flutter路由守卫拦截的实现
    目录为什么要使用路由Flutter路由守卫拦截的实现一、路右表管理二、实现路由守卫为什么要使用路由 在之前我们的代码中,页面跳转使用的代码如下所示: Navigator.of(con...
    99+
    2024-04-02
  • Flutter使用pushpop方法及路由进行导航详解
    目录正文准备工作第一种导航方式第二种导航方式正文 在 Web/Mobile 应用程序中,导航是一个很重要的特性,因为它允许你从一个页面跳转到另一个页面。 在 flutter 应用程序...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作