Flutter路由框架Fluro使用簡(jiǎn)介
在Flutter應(yīng)用開(kāi)發(fā)過(guò)程中,除了使用Flutter官方提供的路由外,還可以使用一些第三方路由框架來(lái)實(shí)現(xiàn)頁(yè)面管理和導(dǎo)航,如Fluro、Frouter等。
Fluro作為一款優(yōu)秀的Flutter企業(yè)級(jí)路由框架,F(xiàn)luro的使用比官方提供的路由框架要復(fù)雜一些,但是卻非常適合中大型項(xiàng)目。因?yàn)樗哂袑哟畏置?、條理化、方便擴(kuò)展和便于整體管理路由等優(yōu)點(diǎn)。
使用Fluro之前需要先在pubspec.yaml文件中添加Fluro依賴(lài),如下所示。
dependencies: fluro: "^1.5.1"
如果無(wú)法使用上面的方式添加Fluro依賴(lài),還可以使用git的方式添加Fluro依賴(lài),如下所示。
dependencies: fluro: git: git://github.com/theyakka/fluro.git
成功添加Fluro庫(kù)依賴(lài)后,就可以使用Fluro進(jìn)行應(yīng)用的路由管理與導(dǎo)航開(kāi)發(fā)了。為了方便對(duì)路由進(jìn)行統(tǒng)一的管理,首先需要新建一個(gè)路由映射文件,用來(lái)對(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';
//空頁(yè)面
var emptyHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
return PageEmpty();
});
//A頁(yè)面
var aHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
return PageA();
});
//B頁(yè)面
var bHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
return PageB();
});
完成基本的路由配置后,還需要一個(gè)靜態(tài)的路由總體配置文件,方便我們?cè)诼酚身?yè)面中使用。如下所示,是路由總體配置文件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; //空頁(yè)面
}
}
在進(jìn)行路由的總體配置時(shí),還需要處理不存在的路徑情況,即使用空頁(yè)面或者默認(rèn)頁(yè)面進(jìn)行代替。同時(shí),需要注意的是應(yīng)用的首頁(yè)一定要用“/”進(jìn)行配置。
為了方便使用,還需要把Router進(jìn)行靜態(tài)化,這樣在任何一個(gè)頁(yè)面都可以直接調(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è)頁(yè)面,只需要使用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使用PopupWindow實(shí)現(xiàn)頁(yè)面點(diǎn)擊頂部彈出下拉菜單
這篇文章主要給大家介紹android使用PopupWindow實(shí)現(xiàn)頁(yè)面點(diǎn)擊頂部彈出下拉菜單,實(shí)現(xiàn)此功能主要通過(guò)PopupWindow方法,代碼也很簡(jiǎn)單,需要的朋友可以參考下2015-08-08
解決Android studio模擬器啟動(dòng)失敗的問(wèn)題
這篇文章主要介紹了Android studio模擬器啟動(dòng)失敗的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Android 實(shí)現(xiàn)自定義圓形進(jìn)度條的實(shí)例代碼
進(jìn)度條在Android中教程使用到,本文章向大家介紹一下Android自定義圓形進(jìn)度條實(shí)現(xiàn)代碼,需要的朋友可以參考一下。2016-11-11
Android即時(shí)通訊設(shè)計(jì)(騰訊IM接入和WebSocket接入)
本文主要介紹了Android即時(shí)通訊設(shè)計(jì)(騰訊IM接入和WebSocket接入),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Android編程中聊天頁(yè)面背景圖片、標(biāo)題欄由于鍵盤(pán)引起問(wèn)題的解決方法
這篇文章主要介紹了Android編程中聊天頁(yè)面背景圖片、標(biāo)題欄由于鍵盤(pán)引起問(wèn)題的解決方法,針對(duì)鍵盤(pán)彈出時(shí)標(biāo)題欄及背景圖片異常的相關(guān)解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
Android點(diǎn)擊事件的實(shí)現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了Android點(diǎn)擊事件的實(shí)現(xiàn)方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android FTP 多線程斷點(diǎn)續(xù)傳下載\上傳的實(shí)例
本篇文章主要介紹了Android FTP 多線程斷點(diǎn)續(xù)傳下載\上傳的實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
ANDROID中自定義對(duì)話框AlertDialog使用示例
這篇文章主要為大家詳細(xì)介紹了Android中自定義對(duì)話框AlertDialog使用示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Android中3種全屏方法及3種去掉標(biāo)題欄的方法
這篇文章主要介紹了Android中3種全屏方法及3種去掉標(biāo)題欄的方法,二個(gè)問(wèn)題各給出了3種解決方法,并給出實(shí)例代碼,需要的朋友可以參考下2015-06-06

