欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年09月08日 11:34:19   作者:JoeYoung  
Flutter本身提供了路由機制,本文主要介紹了Flutter fluro配置使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Flutter本身提供了路由機制,作個人的小型項目,完全足夠了。但是如果你要作企業(yè)級開發(fā),可能就會把入口文件變得臃腫不堪。而再Flutter問世之初,就已經了企業(yè)級路由方案fluro。

flutter_fluro簡介

fluro簡化了Flutter的路由開發(fā),也是目前Flutter生態(tài)中最成熟的路由框架。

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相當于一個路由的規(guī)則,比如我們要到詳細頁面,這時候就需要傳遞商品的ID,那就要寫一個handler。這次我按照大型企業(yè)級真實項目開發(fā)來部署項目目錄和文件,把路由全部分開,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的編寫是路由中最重要的一個環(huán)境,知識點也是比較多的,這里我們學的只是最簡單的一個Handler編寫,以后會隨著課程的增加,我們會再繼續(xù)深入講解Handler的編寫方法。

Hanlder只是對每個路由的獨立配置文件,fluro當然還需要一個總體配置文件。配置好后,我們還需要一個靜態(tài)化文件,方便我們在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'; //詳情頁面
  //靜態(tài)方法
  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靜態(tài)化

這一步就是為了使用方便,直接把Router進行靜態(tài)化,這樣在任何一個頁面都可以直接調用,不用再New 去調用了。

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

import 'package:fluro/fluro.dart';

class Application{
  static Router router;
}

靜態(tài)化Router,這樣我們在使用的時候就可以直接用 Application.Router就可以了。

現在我們基本就把Fluro的路由配置好了,這樣的配置雖然稍顯復雜,但是跟層次和條理化,擴展性也很強。

把路由注冊/注入到頂層

打開main.dart文件,首頁引入配置文件和靜態(tài)化文件,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, //路由靜態(tài)化
        //----------------主要代碼end
        theme: ThemeData(
          primaryColor:Colors.pink,
        ),
        home:IndexPage()
      ),
    );
  }
}

上面代碼就是注入整個程序,讓我們在任何頁面直接引入application.dart就可以使用。

在首頁使用

現在要在首頁里使用路由,直接在首頁打開商品詳細頁面。

先引入application.dart文件:

import './routers/application.dart';

然后再火爆專區(qū)的列表中使用配置好的路由,打開商品詳細頁面details_page.dart。

打開home_page.dart文件,找到火爆專區(qū)列表里的ontap事件,然后在ontap事件中直接使用application進行跳轉,代碼如下:

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

這時候可以測試一下,如果一切正常,應該可以打開商品詳細頁面了。

總結:

單獨寫一個Handler文件,每個Handler都寫在里面,每個路由單獨定義,然后進行跳轉頁面都是在Handler里做的。如果有10個頁面,把10個頁面的Handler都做完了,要到routes.dart文件里去進行總體配置define,再進行靜態(tài)化,然后在主main.dart文件里注入,最后就可以使用了。

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

到此這篇關于Flutter路由fluro引入配置和使用的具體方法的文章就介紹到這了,更多相關Flutter fluro配置使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Flutter Set存儲自定義對象時保證唯一的方法詳解

    Flutter Set存儲自定義對象時保證唯一的方法詳解

    在Flutter中,Set和List是兩種不同的集合類型,List中存儲的元素可以重復,Set中存儲的元素不可重復,如果想在Set中存儲自定義對象,需要確保對象的唯一性,那么如何保證唯一,接下來小編就給大家詳細的介紹一下
    2023-11-11
  • Android permission denied原因歸納和解決辦法

    Android permission denied原因歸納和解決辦法

    大家好,本篇文章主要講的是Android permission denied原因歸納和解決辦法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下哦
    2021-12-12
  • Flutter學習LogUtil封裝與實現實例詳解

    Flutter學習LogUtil封裝與實現實例詳解

    這篇文章主要為大家介紹了Flutter學習LogUtil封裝與實現實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Android  listview數據顯示及提示信息的實例

    Android listview數據顯示及提示信息的實例

    這篇文章主要介紹了Android listview數據顯示及提示信息的實例的相關資料,需要的朋友可以參考下
    2017-05-05
  • Android自定義滑動解鎖控件使用詳解

    Android自定義滑動解鎖控件使用詳解

    這篇文章主要為大家詳細介紹了Android自定義滑動解鎖控件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android實現微信加號菜單模式

    Android實現微信加號菜單模式

    這篇文章主要為大家詳細介紹了Android實現微信加號菜單模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Android 音樂播放器的開發(fā)實例詳解

    Android 音樂播放器的開發(fā)實例詳解

    本文主要講解Android 音樂播放器的開發(fā),這里給大家提供一個簡單的示例代碼,和實現效果圖,有需要開發(fā)音樂播放器的朋友可以參考下
    2016-08-08
  • 深入Android Handler,MessageQueue與Looper關系

    深入Android Handler,MessageQueue與Looper關系

    這篇文章主要介紹了深入Android Handler,MessageQueue與Looper關系,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android仿微博個人詳情頁滾動到頂部的實例代碼

    Android仿微博個人詳情頁滾動到頂部的實例代碼

    這篇文章主要介紹了Android仿微博個人詳情頁滾動到頂部的實例代碼,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒家,需要的朋友可以參考下
    2019-05-05
  • Android登錄時密碼保護功能

    Android登錄時密碼保護功能

    這篇文章主要為大家詳細介紹了Android登錄時密碼保護功能的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論