欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter分析庫(kù),flutter數(shù)據(jù)模型

Flutter圖表庫(kù)fl_chart的使用解析(二)-折線圖

附上開發(fā)環(huán)境:

旌德網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

折線圖是一個(gè) Widget,和普通 Widget一樣聲明即可:

LineChart 的構(gòu)造參數(shù)是一個(gè) LineChartData,其屬性如下:

配置了三條線,所以 lineBarsData 對(duì)應(yīng)的數(shù)組有三個(gè)元素。

看下 LineChartBarData 屬性:

圖表四個(gè)方向的邊框,有總顯示開關(guān),決定是否顯示和隱藏所有,如果開啟,又想隱藏個(gè)別邊框,需要設(shè)置透明色。

FlBorderData 對(duì)應(yīng)邊框信息,有兩個(gè)參數(shù), show 就是顯示與隱藏的邊框, border 是邊框數(shù)據(jù)。

FlTitlesData 可以配置4條坐標(biāo)軸,也有一個(gè)總開關(guān),如果要顯示坐標(biāo)軸,就設(shè)為 true ,然后配置對(duì)應(yīng)位置的數(shù)據(jù):

每個(gè)位置對(duì)應(yīng)的是 SideTitles ,設(shè)置如下:

標(biāo)題是顯示在坐標(biāo)軸后面的文字標(biāo)題,每個(gè)軸對(duì)應(yīng)一個(gè)。

附上源碼

Flutter Dio源碼分析(四)--封裝

Flutter Dio源碼分析(一)--Dio介紹

Flutter Dio源碼分析(二)--HttpClient、Http、Dio對(duì)比

Flutter Dio源碼分析(三)--深度剖析

Flutter Dio源碼分析(四)--封裝

Flutter Dio源碼分析(一)--Dio介紹視頻教程

Flutter Dio源碼分析(二)--HttpClient、Http、Dio對(duì)比視頻教程

Flutter Dio源碼分析(三)--深度剖析視頻教程

Flutter Dio源碼分析(四)--封裝視頻教程

github倉(cāng)庫(kù)地址

本文會(huì)手把手教你該怎么去封裝一個(gè)類庫(kù),平時(shí)在我們的工作中都是拿著別人的造好的輪子在使用,這篇文章將帶你怎么去自己造輪子,以后再碰到別的類庫(kù)需要對(duì)其進(jìn)行封裝的時(shí)候提供一個(gè)的思路和方法。

在前面的文章中,我們對(duì) Dio 的基本使用、請(qǐng)求庫(kù)對(duì)比、源碼分析,我們知道 Dio 的使用非常的簡(jiǎn)單,那為什么還需要進(jìn)行封裝呢?有兩點(diǎn)如下:

當(dāng)組件庫(kù)方法發(fā)生重要改變需要遷移的時(shí)候如果有多處地方用到,那么需要對(duì)使用到的每個(gè)文件都進(jìn)行修改,非常的繁瑣而且很容易出問(wèn)題。

當(dāng)不需要 Dio 庫(kù)的時(shí)候,我們可以隨時(shí)方便切換到別的網(wǎng)絡(luò)請(qǐng)求庫(kù),當(dāng)然 Dio 目前內(nèi)置支持使用第三方庫(kù)的適配器。

因?yàn)橐粋€(gè)應(yīng)用程序基本都是統(tǒng)一的配置方式,所以我們可以針對(duì) 攔截器 、 轉(zhuǎn)換器 、 緩存 、 統(tǒng)一處理錯(cuò)誤 、 代理配置 、 證書校驗(yàn) 等多個(gè)配置進(jìn)行統(tǒng)一管理。

因?yàn)槲覀兊膽?yīng)用程序在每個(gè)頁(yè)面中都會(huì)用到網(wǎng)絡(luò)請(qǐng)求,那么如果我們每次請(qǐng)求的時(shí)候都去實(shí)例化一個(gè) Dio ,無(wú)非是增加了系統(tǒng)不必要的開銷,而使用單例模式對(duì)象一旦創(chuàng)建每次訪問(wèn)都是同一個(gè)對(duì)象,不需要再次實(shí)例化該類的對(duì)象。

這是通過(guò)靜態(tài)變量的私有構(gòu)造器來(lái)創(chuàng)建的單例模式

我們對(duì) 超時(shí)時(shí)間 、 響應(yīng)時(shí)間 、 BaseUrl 進(jìn)行統(tǒng)一設(shè)置

因?yàn)椴还苁?get() 還是 post() 請(qǐng)求, Dio 內(nèi)部最終都會(huì)調(diào)用 request 方法,只是傳入的 method 不一樣,所以我們這里定義一個(gè)枚舉類型在一個(gè)方法中進(jìn)行處理

我們已經(jīng)把 Restful API 風(fēng)格簡(jiǎn)化成了一個(gè)方法,通過(guò) DioMethod 來(lái)標(biāo)明不同的請(qǐng)求方式。在我們平時(shí)開發(fā)的過(guò)程中,需要在請(qǐng)求前、響應(yīng)前、錯(cuò)誤時(shí)對(duì)某一些接口做特殊的處理,那我們就需要用到攔截器。 Dio 為我們提供了自定義攔截器功能,很容易輕松的實(shí)現(xiàn)對(duì)請(qǐng)求、響應(yīng)、錯(cuò)誤時(shí)進(jìn)行攔截

我們發(fā)現(xiàn)雖然 Dio 框架已經(jīng)封裝了一個(gè) DioError 類庫(kù),但如果需要對(duì)返回的錯(cuò)誤進(jìn)行統(tǒng)一彈窗處理或者路由跳轉(zhuǎn)等就只能自定義了

在我們發(fā)送請(qǐng)求的時(shí)候會(huì)碰到幾種情況,比如需要對(duì)非open開頭的接口自動(dòng)加上一些特定的參數(shù),獲取需要在請(qǐng)求頭增加統(tǒng)一的 token

在我們請(qǐng)求接口前可以對(duì)響應(yīng)數(shù)據(jù)進(jìn)行一些基礎(chǔ)的處理,比如對(duì)響應(yīng)的結(jié)果進(jìn)行自定義封裝,還可以針對(duì)單獨(dú)的 url 做特殊處理等。

我們看了轉(zhuǎn)換器的介紹,發(fā)現(xiàn)和攔截器的功能差不多,那為什么還要存在轉(zhuǎn)換器,有兩點(diǎn):

執(zhí)行流程: 請(qǐng)求攔截器 請(qǐng)求轉(zhuǎn)換器 發(fā)起請(qǐng)求 響應(yīng)轉(zhuǎn)換器 響應(yīng)攔截器 最終結(jié)果 。

只會(huì)被用于 'PUT'、 'POST'、 'PATCH'方法,因?yàn)橹挥羞@些方法才可以攜帶請(qǐng)求體(request body)

會(huì)被用于所有請(qǐng)求方法的返回?cái)?shù)據(jù)。

在開發(fā)過(guò)程中,客戶端和服務(wù)器打交道的時(shí)候,往往會(huì)用一個(gè) token 來(lái)做校驗(yàn),因?yàn)槊總€(gè)公司處理刷新token的邏輯都不一樣,我這里舉一個(gè)簡(jiǎn)單的例子

為什么我們需要有取消請(qǐng)求的功能,如果當(dāng)我們的頁(yè)面在發(fā)送請(qǐng)求時(shí),用戶主動(dòng)退出當(dāng)前界面或者app應(yīng)用程序退出的時(shí)候數(shù)據(jù)還沒(méi)有響應(yīng),那我們就需要取消該網(wǎng)絡(luò)請(qǐng)求,防止不必要的錯(cuò)誤。

由 服務(wù)器生成 的 一小段文本信息 ,發(fā)送給瀏覽器,瀏覽器把 cookie 以kv形式保存到本地 某個(gè)目錄下的文本文件內(nèi),下一次請(qǐng)求同一網(wǎng)站時(shí)會(huì)把該 cookie 發(fā)送給服務(wù)器。

cookie 的使用需要用到兩個(gè)第三方組件 dio_cookie_manager 和 cookie_jar

因?yàn)樵谖覀兤綍r(shí)的開發(fā)過(guò)程中,會(huì)碰到一種情況,在進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),我們希望能正常訪問(wèn)到上次的數(shù)據(jù),對(duì)于用戶的體驗(yàn)比較好,而不是展示一個(gè)空白的頁(yè)面,該緩存主要是 《Flutter實(shí)戰(zhàn)》網(wǎng)絡(luò)接口緩存 提供參考。

我們?cè)诔绦蛲顺龊髢?nèi)存緩存將會(huì)消失,所以我們用 shared_preferences 進(jìn)行磁盤緩存數(shù)據(jù)。

在我們用flutter進(jìn)行抓包的時(shí)候需要配置 Dio 代理。由 DefaultHttpClientAdapter 提供了一個(gè) onHttpClientCreate 回調(diào)來(lái)設(shè)置底層 HttpClient 的代理。

用于驗(yàn)證正在訪問(wèn)的網(wǎng)站是否真實(shí)。提供安全性,因?yàn)樽C書和域名綁定,并且由根證書機(jī)構(gòu)簽名確認(rèn)。

日志打印主要是幫助我們開發(fā)時(shí)進(jìn)行輔助排錯(cuò)

Flutter初探--常用依賴包

國(guó)外地址:

國(guó)內(nèi)鏡像:

以 flutter_screenutil 為例

路由框架 annotation_route

狀態(tài)管理 provider

UI適配 flutter_screenutil

刷新控件 flutter_easyrefresh

網(wǎng)絡(luò)請(qǐng)求 dio

toast控件 fluttertoast

圖表庫(kù) charts_flutter

網(wǎng)絡(luò)監(jiān)聽(tīng) connectivity

事件總線 event_bus

日歷組件 table_calendar

官方webview webview_flutter

第三方webview flutter_webview_plugin

該篇文章為常用依賴包總結(jié),用來(lái)記錄所需要的常用依賴包,后續(xù)會(huì)不斷擴(kuò)充內(nèi)容~

Flutter -- JSON解析

由于 Flutter 不支持運(yùn)行時(shí)反射,JSON 解析完全是手動(dòng)的。

所謂手動(dòng)解析,是指使用 dart:convert 庫(kù)中內(nèi)置的 JSON 解碼器,將 JSON 字符串解析成自定義對(duì)象的過(guò)程。使用這種方式,我們需要先將 JSON 字符串傳遞給 JSON.decode 方法解析成一個(gè) Map,然后把這個(gè) Map 傳給自定義的類,進(jìn)行相關(guān)屬性的賦值。

下面動(dòng)手解析一個(gè)用戶的信息

首先,我們根據(jù) JSON 結(jié)構(gòu)定義 User類,并創(chuàng)建一個(gè)工廠類,來(lái)處理 User 類屬性成員與 JSON 字典對(duì)象的值之間的映射關(guān)系:

數(shù)據(jù)解析類創(chuàng)建好了,剩下的事情就相對(duì)簡(jiǎn)單了,我們只需要把 JSON 文本通過(guò) JSON.decode 方法轉(zhuǎn)換成 Map,然后把它交給 User 的工廠類 fromJson 方法,即可完成 User 對(duì)象的解析:

項(xiàng)目中往往會(huì)碰到 嵌套對(duì)象屬性 情況,

面對(duì)這種情況,我們需要為每一個(gè)非基本類型屬性創(chuàng)建一個(gè)解析類。

然后,我們只需要在 User 類中,增加 dog 屬性及對(duì)應(yīng)的 JSON 映射規(guī)則即可:

通過(guò)這種方法,無(wú)論對(duì)象有多復(fù)雜的非基本類型屬性,我們都可以創(chuàng)建對(duì)應(yīng)的解析類進(jìn)行處理。

不過(guò)到現(xiàn)在為止,我們的 JSON 數(shù)據(jù)解析還是在主 Isolate 中完成。如果 JSON 的數(shù)據(jù)格式比較復(fù)雜,數(shù)據(jù)量又大,這種解析方式可能會(huì)造成短期 UI 無(wú)法響應(yīng)。下面我們可以用 compute 函數(shù)優(yōu)化一下

通過(guò) compute 的改造,我們就不用擔(dān)心 JSON 解析時(shí)間過(guò)長(zhǎng)阻塞 UI 響應(yīng)了。

新聞標(biāo)題:flutter分析庫(kù),flutter數(shù)據(jù)模型
URL地址:http://chinadenli.net/article10/dsgehdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作企業(yè)建站做網(wǎng)站商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司