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

flutter分析教學(xué),簡書 flutter

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

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

創(chuàng)新互聯(lián)公司是專業(yè)的鎮(zhèn)坪網(wǎng)站建設(shè)公司,鎮(zhèn)坪接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行鎮(zhèn)坪網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

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

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

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

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

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

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

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

github倉庫地址

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

在前面的文章中,我們對 Dio 的基本使用、請求庫對比、源碼分析,我們知道 Dio 的使用非常的簡單,那為什么還需要進行封裝呢?有兩點如下:

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

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

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

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

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

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

因為不管是 get() 還是 post() 請求, Dio 內(nèi)部最終都會調(diào)用 request 方法,只是傳入的 method 不一樣,所以我們這里定義一個枚舉類型在一個方法中進行處理

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

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

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

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

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

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

只會被用于 'PUT'、 'POST'、 'PATCH'方法,因為只有這些方法才可以攜帶請求體(request body)

會被用于所有請求方法的返回數(shù)據(jù)。

在開發(fā)過程中,客戶端和服務(wù)器打交道的時候,往往會用一個 token 來做校驗,因為每個公司處理刷新token的邏輯都不一樣,我這里舉一個簡單的例子

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

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

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

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

我們在程序退出后內(nèi)存緩存將會消失,所以我們用 shared_preferences 進行磁盤緩存數(shù)據(jù)。

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

用于驗證正在訪問的網(wǎng)站是否真實。提供安全性,因為證書和域名綁定,并且由根證書機構(gòu)簽名確認。

日志打印主要是幫助我們開發(fā)時進行輔助排錯

Flutter:手把手教你使用滾動型列表組件:ListView

ListView的基礎(chǔ)創(chuàng)建使用有三種方式:

通過默認構(gòu)造函數(shù)來創(chuàng)建列表,應(yīng)用場景 = 短列表

這種方式創(chuàng)建的列表存在一個問題:對于那些長列表或者需要較昂貴渲染開銷的子組件,即使還沒有出現(xiàn)在屏幕中但仍然會被ListView所創(chuàng)建,這將是一項較大的開銷,使用不當(dāng)可能引起性能問題甚至卡頓。

長列表

列表子項之間需要分割線

ListView的進階使用主要包括:下拉刷新 上拉加載

在Flutter中,ListView結(jié)合RefreshIndicator組件實現(xiàn)下拉刷新

通過包裹一層RefreshIndicator,自定義onRefresh回調(diào)方法實現(xiàn)

方式有兩種:

通過ListView.controller屬性可以判斷ListView是否滑動到了底部,再進行上拉加載

NotificationListener是一個Widget,可監(jiān)聽子Widget發(fā)出的Notification

ListView在滑動時中會發(fā)出ScrollNotification類型的通知,可通過監(jiān)聽該通知得到ListView的滑動狀態(tài),判斷是否滑動到了底部,從而進行上拉加載

NotificationListener有一個onNotification屬性,定義了監(jiān)聽的回調(diào)方法,通過它來處理加載更多邏輯

不定期分享關(guān)于 安卓開發(fā) 的干貨,追求 短、平、快 ,但 卻不缺深度 。

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程(28 個視頻)

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #01 環(huán)境搭建 「14:03」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #02 Dart 語言 「17:49」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #03 建立 Android studio 虛擬設(shè)備 「04:12」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #04 建立第一個項目 「08:23」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #05 安裝配置過程中可能遇到的問題(沒遇到者可以跳過) 「05:07」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #06 運行 iOS 模擬器 「04:07」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #07 Flutter 概述 「06:15」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #08 Scaffold AppBar 「Pro」「06:50」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #09 文檔和快捷鍵 「Pro」「02:36」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #10 顏色 Colors 「Pro」「05:47」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #11 自定義字體 fonts 「Pro」「05:09」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #12 hot reload StatelessWidget 「Pro」「04:56」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #13 使用圖片 「Pro」「04:59」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #14 使用圖標(biāo) - Icon 「Pro」「01:27」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #15 Button 按鈕使用指南 「Pro」「04:35」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #16 Container 和 Padding 「Pro」「04: 52」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #17 Row 「Pro」「05:24」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #18 Column 「Pro」「05:36」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #19 Flutter Outline Shortcuts 「Pro」「03:18」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #20 Expanded Widgets 「Pro」「06:06」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #21 實戰(zhàn)開始 「Pro」「11:42」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #22 換個編輯器 - Visual Studio Code 「Pro」「04:50」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #23 Stateful vs Stateless Widget 「Pro」「09:45」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #24 列表處理 「Pro」「04:54」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #25 自定義 class 「Pro」「05:37」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #26 card widget 「Pro」「04:26」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #27 Extracting Widgets 「Pro」「06:59」

Flutter 零基礎(chǔ)入門實戰(zhàn)視頻教程 #28 刪除 - Functions as Parameters - 完結(jié) - 進入實戰(zhàn)課 「Pro」「04:35」

求flutter的教學(xué)視頻!!!!

Flutter教程全套 (全網(wǎng)獨家)百度網(wǎng)盤免費資源在線學(xué)習(xí) ?

鏈接:

提取碼: m9z8 ?

Flutter教程全套 (全網(wǎng)獨家)

第一套:Flutter 攜程17章全-整理好

第五套:Flutter高仿谷歌翻譯項目課程

第四套:兩小時掌握Flutter移動App開發(fā)視頻

第三套:flutter入門到精通全套

第七套:Flutter小實戰(zhàn)20個

第六套:仿直聘boss的flutter完整教程

第九套:Flutter跨平臺開發(fā)

第二套:flutter移動電商實戰(zhàn)-技術(shù)胖

第八套:Flutter基礎(chǔ)教程(基礎(chǔ)不好的優(yōu)先看)

24Flutter的打包.mp4

23靜態(tài)資源和項目圖片的處理.mp4

22頁面跳轉(zhuǎn)并返回數(shù)據(jù)_.mp4

21導(dǎo)航的參數(shù)傳遞和接受-2_.mp4

20導(dǎo)航的參數(shù)傳遞和接受-1.mp4

文章題目:flutter分析教學(xué),簡書 flutter
當(dāng)前URL:http://www.chinadenli.net/article16/dsdisgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航網(wǎng)站內(nèi)鏈品牌網(wǎng)站建設(shè)App開發(fā)網(wǎng)站收錄微信小程序

廣告

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

小程序開發(fā)