欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

封裝flutter組建,flutter 容器化

Flutter 網(wǎng)絡(luò)請求類封裝及搜索框?qū)崿F(xiàn)

在 Flutter 中定時器相對 iOS 來說比較好的一點就是定時器事件的執(zhí)行不會受視圖拖拽的影響,不涉及到模式。但是需要注意一點的是在頁面離開的時候要對定時器進(jìn)行銷毀。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供豐寧網(wǎng)站建設(shè)、豐寧做網(wǎng)站、豐寧網(wǎng)站設(shè)計、豐寧網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、豐寧企業(yè)網(wǎng)站模板建站服務(wù),十多年豐寧做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

開始的時候我們是在頁面中直接使用三方框架 http 進(jìn)行網(wǎng)絡(luò)的請求,這里不好的一點就是如果將來我們更換了網(wǎng)絡(luò)請求框架的話,項目中涉及到網(wǎng)絡(luò)的請求的地方都需要改動,對項目的影響會比較大。所以這里我們自己封裝了一個網(wǎng)絡(luò)請求類,定義自己的網(wǎng)絡(luò)請求方法,即使將來更換三方框架的話,我們只需要在我們自己網(wǎng)絡(luò)請求類里面更換就好,項目的其他地方不用改動。對網(wǎng)絡(luò)請求進(jìn)行封裝,相信不管是 iOS 項目還是安卓項目肯定也都是這樣做的。

這里我們是基于 Dio 這個三方框架進(jìn)行封裝的,在 HttpManager 類中我們定義了 Dio 的單例對象 _dioInstance ,通過單例方法 _getDioInstance 來獲取單例對象。我們定義了 post 跟 get 兩個靜態(tài)方法,在這兩個方法中我們都調(diào)用了私有方法 _sendRequest , _sendRequest 方法中通過該傳入的枚舉參數(shù) HttpMethod 來區(qū)分 Dio 單例對象是調(diào)用 get 還是 post 請求。這里需要注意的是方法中一定要使用 async ,返回值前要加 await 。

在聊天頁面中我們可以看到頂部的搜索框,這個搜索框是跟列表一起滾動的,所以比較好的實現(xiàn)方式就是把搜索框定義為一個 cell 。其實這個搜索框只有點擊事件,點擊之后跳轉(zhuǎn)一個新的頁面,所以我們只需要使用小部件來實現(xiàn)搜索框的展示就好。搜索框由白色底視圖跟圖片和文本組成,所以這里我們通過 Stack 部件來實現(xiàn), children 的第一個元素為白色底視圖,圖片跟搜索文字用 Row 部件來實現(xiàn),圖片跟文字布局左右排列。

Flutter的Dio網(wǎng)絡(luò)請求封裝

在yaml文件里邊添加如下依賴

新建一個network_config.dart文件存放網(wǎng)絡(luò)配置

ApiResponse是之前定義的公共接口返回實體 Flutter的Json數(shù)據(jù)解析之FlutterJsonBeanFactory插件

主要是對http異常和業(yè)務(wù)異常進(jìn)行處理。

上述封裝后,如果業(yè)務(wù)存在多個請求依賴調(diào)用,就需要統(tǒng)一的處理錯誤。

Dio支持自定義攔截器,繼承 Interceptor ,重寫 onRequest 和 onResponse 方法就行。

在初始化dio的地方,把攔截器加入dio對象的攔截器集合 dio.interceptors 中就行。

可以通過自定義的攔截器實現(xiàn),也可以引入 pretty_dio_logger 庫。

fastmock 上新建自己的項目,接口配置如下:

發(fā)起請求:

效果展示:

參考文章:

webview_flutter插件封裝實踐1 2022-06-10 周五

在Flutter中沒有WebView組件,但是有官方提供的webview_flutter插件。

其實做的事情跟原生封裝WebView組件類似。

分為url和HTML字符串兩種方式

... ...

webview_flutter: ^3.0.4

Flutter應(yīng)用開發(fā)之webview_flutter插件

flutter官方插件webview_flutter的使用示例

Flutter插件之webview_flutter簡要使用說明

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

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

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

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

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

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

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

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

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

github倉庫地址

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

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

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

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

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

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

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

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

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

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

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

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

在我們請求接口前可以對響應(yīng)數(shù)據(jù)進(jìn)行一些基礎(chǔ)的處理,比如對響應(yīng)的結(jié)果進(jìn)行自定義封裝,還可以針對單獨(dú)的 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ā)過程中,會碰到一種情況,在進(jìn)行網(wǎng)絡(luò)請求時,我們希望能正常訪問到上次的數(shù)據(jù),對于用戶的體驗比較好,而不是展示一個空白的頁面,該緩存主要是 《Flutter實戰(zhàn)》網(wǎng)絡(luò)接口緩存 提供參考。

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

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

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

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

Flutter-下拉刷新、上拉加載組件的封裝和使用

閑來有空,升級了新的SDK版本,之前舊的組件不再可用,封裝一個全新支持Dart“nullsafety”空安全特性、更加簡單易用的ListView組件。

利用NotificationListener的監(jiān)聽事件實現(xiàn)Pull up load more。

利用RefreshIndicator組件實現(xiàn)Pull down refresh。

已開源上傳至GITHUB,歡迎Star、Fork。

Flutter開發(fā)--如何布局?

相對于iOS開發(fā),F(xiàn)lutter的布局更具有靈活性,每個頁面設(shè)計都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應(yīng)該如何去布局,我覺得不現(xiàn)實,大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項目中的一個頁面,來一步一步的拆解布局的流程。整個過程,基本上按照拆解、組件封裝、具體布局這三步來的。

根據(jù)設(shè)計圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因為涉及到疊加,因此考慮用Stack;

系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個contanier,無須指定位置,全視圖擴(kuò)展;載放logo圖標(biāo)在上一層,用Image。最后兩個Text同級放在最上層。Image,Text各用Positioned包裹去指定位置。

登錄內(nèi)容模塊是最外層是一個Contanier容器,去控制背景色和圓角。然后是一個Column元素,逐行排列。

第一行為Image,

第二行為Text,

第三行可以看成一個小Column,分兩塊進(jìn)行布局

第四行可以看成一個小Column,分兩塊進(jìn)行布局

第五行可以看作一個TextButton,

第六行可以看作一個Row,分三塊進(jìn)行布局

通過上面這樣一步一步的分析后,基本上對大致的布局有了一個了解,最外層的控件大致選對(只要能實現(xiàn)的話,就是復(fù)雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復(fù)的或者覺得可以封裝出來的部分,則進(jìn)行下一步。

每一行的拆解,大致也是按照這個思路來進(jìn)行,因此筆者在這里就不做講解了。

在做到第三第四行的時候,發(fā)現(xiàn)這兩個很相似,而且設(shè)計到一些交互邏輯,筆者就想對第三第四行的這種展示進(jìn)行封裝,覺得今后的布局可能會用到,因此在這一步,可以先把這一塊兒抽離出一個控件。利用TextField來實現(xiàn)這種輸入操作,具體的實現(xiàn)筆者不再詳細(xì)的描述了。

經(jīng)過這一步,整體的規(guī)劃設(shè)計圖已經(jīng)有了,各個組件也都有了,接下來的工作就是組裝了。

具體布局設(shè)計到一些細(xì)節(jié)的地方,例如整體Column的居中對齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。

像第六行row是放在底部的,就可以在第六行前面增加一個Spacer()去填充空白區(qū)域。

對文字顏色大小等,可以用TextStyle直接設(shè)置。

對于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。

網(wǎng)站標(biāo)題:封裝flutter組建,flutter 容器化
URL鏈接:http://aaarwkj.com/article14/dsispde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站營銷搜索引擎優(yōu)化、網(wǎng)站改版外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)
成人激情视频在线观看| 免费观看中国性生活片| 国产一区av剧情巨作| 四虎最新永久在线网站| 性感美女国产精品一区二区| 国产精品青青在线观看爽香蕉| 国产精品一区二区三区 在线| 国产情侣最新地址在线| 亚洲乱码日韩电影网站| 一区二区三区高清人妻日本| 国产亚洲精品a久久7777| 欧美日韩精品一区二区视频永久免| 熟女中文字幕亚洲一区二区| 日本成人大片在线观看| 中文字幕在线不卡精品视频| 亚洲av日韩高清在线观看 | 精品人妻区二区三区蜜桃| 年轻的母亲韩国三级| 国产三级国产精品国产| 九九在线视频精品免费播放| 亚洲国产精品一区二区三| 成人黄色av免费看| 91青青草原免费观看| 亚洲成a人片777777久久| 亚洲字幕中文在线乱码mv| 国产欧洲日本一区二区| 亚洲一区二区三区经典精品 | 国产精品一区二区婷婷| 高潮国产精品一区二区| av天堂久久人妻精品加勒比| 国产高清白丝免费在线观看| 五月婷婷六月丁香伊人网| 国产实拍之强伦奸在线观看| 日韩视频精品一区二区 | 91美女黑丝免费国产视频| 欧美在线免费黄片视频| 成人综合影视中文字幕| 美女午夜精品国产福利| 一区二区三区在线观看日韩| 97资源在线中文一区| 日韩人成理论午夜福利|