时间:2021-05-20
在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文件的示例代码。
完成上述操作后,就可以在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要繁琐,但是对于中大型项目却非常适合,它的分层架构也非常方便项目后期的升级和维护,使用时可以根据实际情况进行合理的选择。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
混合开发简介使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。
flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter可以与现有的代码一起工作。在全世界,Flutter
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter可以与现有的代码一起工作。在全世界,Flutter
简介最近花了两天时间研究使用Flutter开发一个抖音国际版.个人感觉使用Flutter开发app快得不要不要的额.两天就基本可以开发个大概出来.最主要是热重载
Image简介Androidios原生中使用ImageView来加载显示图片。在flutter中通过Image来加载并显示图片。所有的widget并不是直接绘制