Flutter路由fluro引入配置和使用的具体方法

目录
  • flutter_fluro简介
  • 引入fluro
  • 初始化Fluro
  • 编写rotuer_handler
  • 配置路由
  • 把Fluro的Router静态化
  • 把路由注册/注入到顶层
  • 在首页使用
  • 总结:

Flutter本身提供了路由机制,作个人的小型项目,完全足够了。但是如果你要作企业级开发,可能就会把入口文件变得臃肿不堪。而再Flutter问世之初,就已经了企业级路由方案fluro。

flutter_fluro简介

fluro简化了Flutter的路由开发,也是目前Flutter生态中最成熟的路由框架。

GitHub地址:https://github.com/theyakka/fluro

它出现的比较早啊,是目前用户最多的Flutter路由解决方案,目前Github上有将近1000Star,可以说是相当了不起了。

引入fluro

在pubspec.yaml文件里,直接注册版本依赖,代码如下。(注意要最新版)

dependencies:
 fluro: "^1.5.1"

如果你这个版本下载不下来,你也可以使用git的方式注册依赖,这样页是可以下载包的(这也是小伙伴提的一个问题),代码如下:

dependencies:
 fluro:
   git: git://github.com/theyakka/fluro.git

在项目的入口文件,也就是main.dart中引入,代码如下:

import 'package:fluro/fluro.dart';

通过上面的三步,就算把Fluro引入到项目中了,下面就可以开心的使用了。

初始化Fluro

现在可以进行使用了,使用时需要先在Build方法里进行初始化,其实就是把对象new出来。

final router = Router();

编写rotuer_handler

handler相当于一个路由的规则,比如我们要到详细页面,这时候就需要传递商品的ID,那就要写一个handler。这次我按照大型企业级真实项目开发来部署项目目录和文件,把路由全部分开,Handler单独写成一个文件。新建一个routers文件夹,然后新建router_handler.dart文件

import 'package:flutter/material.dart';
import 'package:fluro/fluro.dart';
import '../pages/details_page.dart';

Handler detailsHanderl =Handler(
  handlerFunc: (BuildContext context,Map<String,List<String>> params){
    String goodsId = params['id'].first;
    print('index>details goodsID is ${goodsId}');
    return DetailsPage(goodsId);

  }
);

这样一个Handler就写完了。Hanlder的编写是路由中最重要的一个环境,知识点也是比较多的,这里我们学的只是最简单的一个Handler编写,以后会随着课程的增加,我们会再继续深入讲解Handler的编写方法。

Hanlder只是对每个路由的独立配置文件,fluro当然还需要一个总体配置文件。配置好后,我们还需要一个静态化文件,方便我们在UI页面进行使用。

配置路由

我们还需要对路由有一个总体的配置,比如跟目录,出现不存在的路径如何显示,工作中我们经常把这个文件单独写一个文件。在routes.dart里,新建一个routes.dart文件。

代码如下:

import 'package:flutter/material.dart';
import 'package:fluro/fluro.dart';
import './router_handler.dart';

class Routes { //配置类
  static String root = '/'; //根目录
  static String detailsPage = '/detail'; //详情页面
  //静态方法
  static void configureRoutes(Router router){//路由配置
    //找不到路由
    router.notFoundHandler = new Handler(
      handlerFunc: (BuildContext context,Map<String,List<String>> params){
        print('ERROR====>ROUTE WAS NOT FONUND!!!');
      }
    );
    //整体配置
    router.define(detailsPage, handler: detailsHandler); 

  }
}

把Fluro的Router静态化

这一步就是为了使用方便,直接把Router进行静态化,这样在任何一个页面都可以直接调用,不用再New 去调用了。

在routers下面新建了application.dart文件。代码如下:

import 'package:fluro/fluro.dart';

class Application{
  static Router router;
}

静态化Router,这样我们在使用的时候就可以直接用 Application.Router就可以了。

现在我们基本就把Fluro的路由配置好了,这样的配置虽然稍显复杂,但是跟层次和条理化,扩展性也很强。

把路由注册/注入到顶层

打开main.dart文件,首页引入配置文件和静态化文件,routes.dart和application.dart,代码如下:

import './routers/routes.dart';
import './routers/application.dart';

引入后需要进行赋值,进行注入程序。这里展示主要build代码。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //-------------------主要代码start
    final router = Router(); //路由初始化
    Routes.configureRoutes(router);
    Application.router = router;
    //-------------------主要代码end

    return Container(
      child: MaterialApp(
        title:'百姓生活+',
        debugShowCheckedModeBanner: false,
        //----------------主要代码start
        onGenerateRoute: Application.router.generator, //路由静态化
        //----------------主要代码end
        theme: ThemeData(
          primaryColor:Colors.pink,
        ),
        home:IndexPage()
      ),
    );
  }
}

上面代码就是注入整个程序,让我们在任何页面直接引入application.dart就可以使用。

在首页使用

现在要在首页里使用路由,直接在首页打开商品详细页面。

先引入application.dart文件:

import './routers/application.dart';

然后再火爆专区的列表中使用配置好的路由,打开商品详细页面details_page.dart。

打开home_page.dart文件,找到火爆专区列表里的ontap事件,然后在ontap事件中直接使用application进行跳转,代码如下:

Application.router.navigateTo(context,"/detail?id=${val['goodsId']}");

这时候可以测试一下,如果一切正常,应该可以打开商品详细页面了。

总结:

单独写一个Handler文件,每个Handler都写在里面,每个路由单独定义,然后进行跳转页面都是在Handler里做的。如果有10个页面,把10个页面的Handler都做完了,要到routes.dart文件里去进行总体配置define,再进行静态化,然后在主main.dart文件里注入,最后就可以使用了。

每添加一个路由,router文件和Handler文件都要进行配置。

到此这篇关于Flutter路由fluro引入配置和使用的具体方法的文章就介绍到这了,更多相关Flutter fluro配置使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Flutter路由之fluro的配置及跳转

    目录 1.pubspec.yaml导包,注意格式~ 2.新建路由类,改类是定义页面的路径,然后将页面handler和路径设置到路由中 3.新建router_handler.dart,处理参数和跳转页面 4.调用传参 5.接收数据 6.问题来了,因为fluro无法直接传中文的,这里就需要用到编码码解码了,也就是encode和decode 1.pubspec.yaml导包,注意格式~ dependencies: flutter: sdk: flutter fluro: ^1.6.3 2.新建路由类,

  • Flutter 使用fluro的转场动画进行页面切换

    在 fluro 中,定义路由处理器 Handler 时可以指定该页面的默认转场形式,或者在使用 navigateTo 方法是可以设置页面跳转transition参数来设定个性化的转场形式.本篇演示了fluro 内置的转场动画,效果如下图所示. 转场形式 fluro 的转场形式通过 TransitionType枚举定义,如下所示: enum TransitionType { native, //原生形式,和原生的保持一致,默认 nativeModal, //原生模态跳转 inFromLeft, /

  • Flutter路由框架Fluro使用简介

    在Flutter应用开发过程中,除了使用Flutter官方提供的路由外,还可以使用一些第三方路由框架来实现页面管理和导航,如Fluro.Frouter等. Fluro作为一款优秀的Flutter企业级路由框架,Fluro的使用比官方提供的路由框架要复杂一些,但是却非常适合中大型项目.因为它具有层次分明.条理化.方便扩展和便于整体管理路由等优点. 使用Fluro之前需要先在pubspec.yaml文件中添加Fluro依赖,如下所示. dependencies: fluro: "^1.5.1&quo

  • Flutter 路由插件fluro的使用

    前面两篇文章我们介绍了Flutter 的原生导航器 Navigator 实现页面跳转,路由及路由拦截的使用,具体可以参考之前的文章: //www.jb51.net/article/215167.htm //www.jb51.net/article/214856.htm 使用原生的路由基本上能够满足大部分需求,但如果想要对页面做类似浏览器 url 那样的路由,或者控制页面跳转的转场动画,那么原生的路由需要做不少的改造.在 pub 上,有优秀的路由插件 fluro 解决这类问题. fluro的使用方

  • Flutter路由fluro引入配置和使用的具体方法

    目录 flutter_fluro简介 引入fluro 初始化Fluro 编写rotuer_handler 配置路由 把Fluro的Router静态化 把路由注册/注入到顶层 在首页使用 总结: Flutter本身提供了路由机制,作个人的小型项目,完全足够了.但是如果你要作企业级开发,可能就会把入口文件变得臃肿不堪.而再Flutter问世之初,就已经了企业级路由方案fluro. flutter_fluro简介 fluro简化了Flutter的路由开发,也是目前Flutter生态中最成熟的路由框架.

  • Flutter路由框架Fluro使用教程详细讲解

    目录 1.Navigator使用简介 2.fluro 1.配置 2.使用方法 3.路由拦截 3.封装 1.Navigator使用简介 使用Flutter 的Navigator 导航器可以实现页面的跳转,Navigator的使用方法简单介绍一下: 页面跳转: Navigator.push<void>( context, MaterialPageRoute( builder: (BuildContext context) => const MyHomePage(), ), ); 页面跳转的同

  • flutter 路由机制的实现

    目录 实现基础 _routeNamed _flushHistoryUpdates add push pop remove 总结 整个 flutter 应用的运行都只是基于原生应用中的一个 view,比如 android 中的 FlutterView,flutter 中的页面切换依赖于它的路由机制,也就是以 Navigator 为中心的一套路由功能,使得它能够完成与原生类似且能够自定义的页面切换效果. 下面将介绍 flutter 中的路由实现原理,包括初始化时的页面加载.切换页面的底层机制等. 实

  • Flutter路由传递参数及解析实现

    上一篇Flutter页面路由及404路由拦截实现介绍了使用路由来实现页面的跳转,从而简化页面之间的耦合,并可以实现路由拦截.在实际开发中,我们经常会需要在页面跳转的时候携带路由参数,典型的例子就是从列表到详情页的时候,需要携带详情的 id,以便详情页获取对应的数据.同时,有些时候还需要返回时携带参数返回上一级,以便上级页面根据返回结果更新.本篇将介绍这两种情形的实现. Navigator 的 push 和 pop方法 Navigator 导航器的 push 和 pop 方法可以携带参数在页面间传

  • Flutter路由的跳转、动画和传参详解(最简单)

    路由 做Android/iOS原生开发的时候,要打开一个新的页面,你得知道你的目标页面对象,然后初始化一个Intent或者ViewController,再通过startActivity或者pushViewController来推出一个新的页面,不能跟web一样,直接丢一个链接地址就跳转到新的页面.当然,可以自己去加一个中间层来实现这些功能. Flutter里面是原生支持路由的.Flutter的framework提供了路由跳转的实现.我们可以直接使用这些功能. Flutter路由介绍 Flutte

  • thinkphp的URL路由规则与配置实例

    本文实例讲述了thinkphp的URL路由规则与配置方法.分享给大家供大家参考.具体分析如下: 一.URL规则 1.默认是区分大小写的 2.如果我们不想区分大小写可以改配置文件 复制代码 代码如下: 'URL_CASE_INSENSITIVE'=>true,//url不区分大小写 3.如果模块名为 UserGroupAction,那么url找模块就必要要写成 复制代码 代码如下: http://localhost/thinkphp4/index.php/user_group/index 4.如果

随机推荐