Flutter路由框架Fluro使用简介
在Flutter应用开发过程中,除了使用Flutter官方提供的路由外,还可以使用一些第三方路由框架来实现页面管理和导航,如Fluro、Frouter等。
Fluro作为一款优秀的Flutter企业级路由框架,Fluro的使用比官方提供的路由框架要复杂一些,但是却非常适合中大型项目。因为它具有层次分明、条理化、方便扩展和便于整体管理路由等优点。
使用Fluro之前需要先在pubspec.yaml文件中添加Fluro依赖,如下所示。
dependencies:
fluro: "^1.5.1"
如果无法使用上面的方式添加Fluro依赖,还可以使用git的方式添加Fluro依赖,如下所示。
dependencies:
fluro:
git: git://github.com/theyakka/fluro.git
成功添加Fluro库依赖后,就可以使用Fluro进行应用的路由管理与导航开发了。为了方便对路由进行统一的管理,首先需要新建一个路由映射文件,用来对每个路由进行管理。如下所示,是路由配置文件route_handles.dart的示例代码。
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:flutter_demo/page_a.dart';
import 'package:flutter_demo/page_b.dart';
import 'package:flutter_demo/page_empty.dart';
//空页面
var emptyHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String params) {
return PageEmpty();
});
//A页面
var aHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object params) {
return PageA();
});
//B页面
var bHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object params) {
return PageB();
});
完成基本的路由配置后,还需要一个静态的路由总体配置文件,方便我们在路由页面中使用。如下所示,是路由总体配置文件routes.dart的示例代码。
import 'package:fluro/fluro.dart';
import 'package:flutter_demo/route_handles.dart';
class Routes {
static String page_a = "/"; //需要注意
static String page_b = "/b";
static void configureRoutes(Router router) {
router.define(page_a, handler: aHandler);
router.define(page_b, handler: bHandler);
router.notFoundHandler =emptyHandler; //空页面
}
}
在进行路由的总体配置时,还需要处理不存在的路径情况,即使用空页面或者默认页面进行代替。同时,需要注意的是应用的首页一定要用“/”进行配置。 为了方便使用,还需要把Router进行静态化,这样在任何一个页面都可以直接调用它。如下所示,是application.dart文件的示例代码。
import 'package:fluro/fluro.dart';
class Application{
static Router router;
}
完成上述操作后,就可以在main.dart文件中引入路由配置文件和静态化文件了,如下所示。
import 'package:fluro/fluro.dart';
import 'package:flutter_demo/routes.dart';
import 'application.dart';
void main() {
Router router = Router();
Routes.configureRoutes(router);
Application.router = router;
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Demo App',
onGenerateRoute: Application.router.generator,
);
}
}
如果要在跳转到某个页面,只需要使用Application.router.navigateTo()方法即可,如下所示。
Application.router.navigateTo(context,"/b"); //b为配置路由
运行上面的示例代码,效果如下图所示。
可以发现,Fluro虽然使用上相比Flutter的Navigator要繁琐,但是对于中大型项目却非常适合,它的分层架构也非常方便项目后期的升级和维护,使用时可以根据实际情况进行合理的选择。
以上就是本文的全部内容,希望对大家的学习有所帮助。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Spring boot常用注解收集
- Go依赖模块版本之Module避坑使用详解
- 【tcl学习】vivado write_edif
- K8s中优雅停机和零宕机部署
- Python读取.edf格式脑电数据文件
- Kotlin修炼指南(三)——奇技淫巧
- 前端|CSS盒阴影和文字阴影
- 一文读懂Spring Boot各模块组件依赖关系
- 谈一谈|MkDocs介绍及应用
- 讲得最明白的Elasticsearch源码调试环境搭建教程
- 史上最全ThreadPoolExecutor梳理(下篇)
- JAVA|多Realm管理基础实现
- 史上最全ThreadPoolExecutor梳理(上篇)
- 使用缓存必须注意的事项
- ReentrantLock知识点梳理