Flutter路由框架Fluro使用簡(jiǎn)介
在Flutter應(yīng)用開發(fā)過程中,除了使用Flutter官方提供的路由外,還可以使用一些第三方路由框架來實(shí)現(xiàn)頁面管理和導(dǎo)航,如Fluro、Frouter等。
Fluro作為一款優(yōu)秀的Flutter企業(yè)級(jí)路由框架,F(xiàn)luro的使用比官方提供的路由框架要復(fù)雜一些,但是卻非常適合中大型項(xiàng)目。因?yàn)樗哂袑哟畏置鳌l理化、方便擴(kuò)展和便于整體管理路由等優(yōu)點(diǎn)。
使用Fluro之前需要先在pubspec.yaml文件中添加Fluro依賴,如下所示。
dependencies: fluro: "^1.5.1"
如果無法使用上面的方式添加Fluro依賴,還可以使用git的方式添加Fluro依賴,如下所示。
dependencies: fluro: git: git://github.com/theyakka/fluro.git
成功添加Fluro庫(kù)依賴后,就可以使用Fluro進(jìn)行應(yīng)用的路由管理與導(dǎo)航開發(fā)了。為了方便對(duì)路由進(jìn)行統(tǒng)一的管理,首先需要新建一個(gè)路由映射文件,用來對(duì)每個(gè)路由進(jìn)行管理。如下所示,是路由配置文件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(); });
完成基本的路由配置后,還需要一個(gè)靜態(tài)的路由總體配置文件,方便我們?cè)诼酚身撁嬷惺褂?。如下所示,是路由總體配置文件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; //空頁面 } }
在進(jìn)行路由的總體配置時(shí),還需要處理不存在的路徑情況,即使用空頁面或者默認(rèn)頁面進(jìn)行代替。同時(shí),需要注意的是應(yīng)用的首頁一定要用“/”進(jìn)行配置。
為了方便使用,還需要把Router進(jìn)行靜態(tài)化,這樣在任何一個(gè)頁面都可以直接調(diào)用它。如下所示,是application.dart文件的示例代碼。
import 'package:fluro/fluro.dart'; class Application{ static Router router; }
完成上述操作后,就可以在main.dart文件中引入路由配置文件和靜態(tài)化文件了,如下所示。
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, ); } }
如果要在跳轉(zhuǎn)到某個(gè)頁面,只需要使用Application.router.navigateTo()方法即可,如下所示。
Application.router.navigateTo(context,"/b"); //b為配置路由
運(yùn)行上面的示例代碼,效果如下圖所示。
可以發(fā)現(xiàn),F(xiàn)luro雖然使用上相比Flutter的Navigator要繁瑣,但是對(duì)于中大型項(xiàng)目卻非常適合,它的分層架構(gòu)也非常方便項(xiàng)目后期的升級(jí)和維護(hù),使用時(shí)可以根據(jù)實(shí)際情況進(jìn)行合理的選擇。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android數(shù)據(jù)緩存框架內(nèi)置ORM功能使用教程
這篇文章主要為大家介紹了Android數(shù)據(jù)緩存框架內(nèi)置ORM功能使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Android Easeui 3.0 即時(shí)通訊的問題匯總
這篇文章主要介紹了Android Easeui 3.0 即時(shí)通訊的問題匯總的相關(guān)資料,需要的朋友可以參考下2016-09-09Android Studio Kotlin代碼和java代碼相互轉(zhuǎn)化實(shí)例
這篇文章主要介紹了Android Studio Kotlin代碼和java代碼相互轉(zhuǎn)化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Android編程應(yīng)用風(fēng)格和主題詳解
這篇文章主要介紹了Android編程應(yīng)用風(fēng)格和主題,較為詳細(xì)的分析了Android應(yīng)用風(fēng)格和主題的概念、功能、使用方法與注意事項(xiàng),需要的朋友可以參考下2016-10-10android實(shí)現(xiàn)字體閃爍動(dòng)畫的方法
這篇文章主要介紹了android實(shí)現(xiàn)字體閃爍動(dòng)畫的方法,涉及Android中線程調(diào)用和Timer計(jì)時(shí)器的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07Android開發(fā)筆記之圖片緩存、手勢(shì)及OOM分析
這篇文章主要介紹了Android開發(fā)筆記之圖片緩存、手勢(shì)及OOM分析 的相關(guān)資料,需要的朋友可以參考下2016-01-01