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

flutter組件引用,flutter 自定義組件

Flutter發(fā)布Package(Pub.dev或私有Pub倉庫)

??因?yàn)槲覀兪褂肍lutter跨平臺技術(shù)開發(fā)App時(shí),會有很多公用組件,因?yàn)镕lutter中一切皆為Widget,widget也比較細(xì)粒度,所以我們需要進(jìn)行封裝,用于一個(gè)項(xiàng)目或者公司不同項(xiàng)目中去~

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、托克遜網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、托克遜網(wǎng)絡(luò)營銷、托克遜企業(yè)策劃、托克遜品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供托克遜建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:chinadenli.net

??那么今天寫寫如何發(fā)布package或者插件到Pub.dev上,扯扯談O(∩_∩)O哈哈~

《Flutter的撥云見日》系列文章如下:

1、Flutter中指定字體(全局或者局部,自有字庫或第三方)

2、Flutter發(fā)布Package(Pub.dev或私有Pub倉庫)

首先,我們知道flutter有四種工程模式:Flutter Application、Flutter Module、Flutter Plugin和Flutter Package。

我們這里就主要講Package 純Dart插件的發(fā)布吧,都差不多。

創(chuàng)建工程后,就可以編寫你的公共組件,或者公用字體庫呀啥的, 都行。

在更改下你的pubspec.yaml文件,修改下你的versionCode,項(xiàng)目名稱,項(xiàng)目描述,作者等

如果上傳失敗試試????的命令:

在執(zhí)行該命令時(shí),可能會中途調(diào)到網(wǎng)頁,要求你登錄google賬號,登錄授權(quán),到時(shí)候登錄賬號并授權(quán)就可以了。

因?yàn)槲覀冎苯邮褂胒lutter packages pub publish是發(fā)布到Pub.dev上,并不是發(fā)布到私有倉庫,該怎么辦呢?

其實(shí)呢,也很簡單!像versionCode,項(xiàng)目名,等都和發(fā)布Pub.dev是一樣的。沒啥區(qū)別。

有兩種方式:

就是這么簡單o( @ )o

相信大家引用Pub.dev上的第三方庫都會了哈,到處都是這里不講了

在使用flutter pub get就可以拉到私有倉庫項(xiàng)目了

以上就差不多聊了聊package發(fā)布和獲取的事兒了,都很明了,大家可以試試,挺簡單的。

PS: 寫文不易,覺得沒有浪費(fèi)你時(shí)間,請給個(gè)點(diǎn)贊~ ????

Flutter:手把手教你使用滾動(dòng)型列表組件:ListView

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

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

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

長列表

列表子項(xiàng)之間需要分割線

ListView的進(jìn)階使用主要包括:下拉刷新 上拉加載

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

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

方式有兩種:

通過ListView.controller屬性可以判斷ListView是否滑動(dòng)到了底部,再進(jìn)行上拉加載

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

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

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

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

Flutter(6):基礎(chǔ)組件之Image

Image是一個(gè)用于展示圖片的組件。支持 JPEG、PNG、GIF、Animated GIF、WebP、Animated WebP、BMP 和 WBMP 等格式。

Image.asset - 用于從資源目錄的顯示圖片,需要在 pubspec.yaml 文件中聲明。

Image.network - 用于從網(wǎng)絡(luò)上顯示圖片。

Image.file - 用于從文件里顯示圖片。

Image.memory - 用于從內(nèi)存里(Uint8List)顯示圖片。

alignment → AlignmentGeometry - 圖像邊界內(nèi)對齊圖像。

centerSlice → Rect - 九片圖像的中心切片。

color → Color - 該顏色與每個(gè)圖像像素混合colorBlendMode。

colorBlendMode → BlendMode - 用于 color 與此圖像結(jié)合使用。

fit → BoxFit - 圖像在布局中分配的空間。

gaplessPlayback → bool - 當(dāng)圖像提供者發(fā)生變化時(shí),是繼續(xù)顯示舊圖像(true)還是暫時(shí)不顯示(false)。

image → ImageProvider - 要顯示的圖像。

matchTextDirection → bool - 是否在圖像的方向上繪制圖像 TextDirection。

repeat → ImageRepeat - 未充分容器時(shí),是否重復(fù)圖片。

height → double - 圖像的高度。

width → double - 圖像的寬度。

加載資源圖片需要將圖片資源放入工程中,例如:新建images文件夾,將圖片放在該文件夾下,圖片適配則是使用ios的方式1X,2X,3X:

然后在pubspec.yaml中配置assets:

加載資源/網(wǎng)絡(luò)/本地文件圖片/內(nèi)存圖片:

占位圖加載圖片:

圓形圖片:1.裁剪實(shí)現(xiàn) 2.CircleAvatar實(shí)現(xiàn) 3.Container邊框?qū)崿F(xiàn)

圓角圖片:1.裁剪實(shí)現(xiàn) 2.Container邊框?qū)崿F(xiàn)

BoxFit.contain 全圖居中顯示但不充滿,顯示原比例

BoxFit.cover 圖片可能拉伸,也可能裁剪,但是充滿容器

BoxFit.fill 全圖顯示且填充滿,圖片可能會拉伸

BoxFit.fitHeight 圖片可能拉伸,可能裁剪,高度充滿

BoxFit.fitWidth 圖片可能拉伸,可能裁剪,寬度充滿

BoxFit.scaleDown 效果和contain差不多, 但是只能縮小圖片,不能放大圖片

下一節(jié)學(xué)習(xí)基礎(chǔ)組件之Text

Flutter組件(Widget)的局部刷新方式

Flutter中有兩個(gè)常用的狀態(tài)Widget分為StatefulWidget和StatelessWidget,分別為動(dòng)態(tài)視圖和靜態(tài)視圖,視圖的更新需要調(diào)用StatefulWidget的setState方法,這會遍歷調(diào)用子Widget的build方法。如果一個(gè)頁面內(nèi)容比較復(fù)雜時(shí),會包含多個(gè)widget,如果直接調(diào)用setState,會遍歷所有子Widget的build,這樣會造成很多不必要的開銷,所以非常有必要了解Flutter中局部刷新的方式:

globalkey唯一定義了某個(gè)element,它使你能夠訪問與element相關(guān)聯(lián)的其他對象,例如buildContext、state等。應(yīng)用場景:跨widget訪問狀態(tài)。

例如:可以通過key.currentState拿到它的狀態(tài)對象,然后就可以調(diào)用其中的onPressed方法。

Flutter框架內(nèi)部提供了一個(gè)非常小巧精致的組件,專門用于局部組件的刷新。適用于值改動(dòng)的刷新。

實(shí)現(xiàn)原理:在 initState 中對傳入的可監(jiān)聽對象進(jìn)行監(jiān)聽,執(zhí)行 _valueChanged 方法,_valueChanged 中進(jìn)行了 setState 來觸發(fā)當(dāng)前狀態(tài)的刷新。觸發(fā) build 方法,從而觸發(fā) widget.builder 回調(diào),這樣就實(shí)現(xiàn)了局部刷新。可以看到這里回調(diào)的 child 是組件傳入的 child,所以直接使用,這就是對 child 的優(yōu)化的根源。

可以看到 ValueListenableBuilder 實(shí)現(xiàn)局部刷新的本質(zhì),也是進(jìn)行組件的抽離,讓組件狀態(tài)的改變框定在狀態(tài)內(nèi)部,并通過 builder 回調(diào)控制局部刷新,暴露給用戶使用。

通過這個(gè)可以創(chuàng)建一個(gè)支持局部刷新的widget樹,比如你可以在StatelessWidget里面刷新某個(gè)布局,但是不需要改變成StatefulWidget;也可以在StatefulWidget中使用做部分刷新而不需要刷新整個(gè)頁面,這個(gè)刷新是不會調(diào)用Widget build(BuildContext context)刷新整個(gè)布局樹的。

異步UI更新:

很多時(shí)候我們會依賴一些異步數(shù)據(jù)來動(dòng)態(tài)更新UI,比如在打開一個(gè)頁面時(shí)我們需要先從互聯(lián)網(wǎng)上獲取數(shù)據(jù),在獲取數(shù)據(jù)的過程中顯示一個(gè)加載框,等獲取到數(shù)據(jù)時(shí)我們再渲染頁面;又比如我們想展示Stream(比如文件流、互聯(lián)網(wǎng)數(shù)據(jù)接收流)的進(jìn)度。當(dāng)然StatefulWidget我們完全可以實(shí)現(xiàn)以上功能。但由于在實(shí)際開發(fā)中依賴異步數(shù)據(jù)更新UI的這種場景非常常見,并且當(dāng)StatefulWidget中控件樹較大時(shí),更新一個(gè)屬性導(dǎo)致整個(gè)樹重建,消耗性能,因此Flutter專門提供了FutureBuilder和SteamBuilder兩個(gè)組件來快速實(shí)現(xiàn)這種功能。

通常情況下,子Widget無法單獨(dú)感知父Widget的變化,當(dāng)父state變化時(shí),通過其build重建所有子widget;

InheriteddWidget可以避免這種全局創(chuàng)建,實(shí)現(xiàn)局部子Widget更新。InheritedWidget提供了一種在Widget樹中從上到下傳遞、共享數(shù)據(jù)的方式。Flutter SDK正是通過InheritedWidget來共享應(yīng)用主題和Locale等信息。

InheritedWidgetData

TestData

InheritedTest1Page

provider是Google I/O 2019大會上宣布的現(xiàn)在官方推薦的管理方式,而ChangeNotifierProvider可以說是Provider的一種:

yaml文件需要引入provider: ^3.1.0

頂層嵌套ChangeNotifierProvider

創(chuàng)建共享數(shù)據(jù)類DataInfo:

數(shù)據(jù)類需要with ChangeNotifier 以使用 notifyListeners()函數(shù)通知監(jiān)聽者更新界面。

使用Provider.of(context)獲取DataInfo

nextPage:

使用Consumer包住需要使用共享數(shù)據(jù)的Widget

RepaintBoundary就是重繪邊界,用于重繪時(shí)獨(dú)立于父視圖。頁面需要更新的頁面結(jié)構(gòu)可以用 RepaintBoundary組件嵌套,flutter 會將包含的組件獨(dú)立出一層"畫布",去繪制。官方很多組件 外層也包了層 RepaintBoundary 標(biāo)簽。如果你的自定義view比較復(fù)雜,應(yīng)該盡可能的避免重繪。

以上總結(jié)了幾種Flutter的局部刷新的方式,可根據(jù)實(shí)際需要使用不同的方式,最適合的才是最好的。

當(dāng)前名稱:flutter組件引用,flutter 自定義組件
轉(zhuǎn)載注明:http://chinadenli.net/article12/dsiocdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站云服務(wù)器關(guān)鍵詞優(yōu)化手機(jī)網(wǎng)站建設(shè)營銷型網(wǎng)站建設(shè)網(wǎng)站營銷

廣告

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

手機(jī)網(wǎng)站建設(shè)