真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

flutter全部組件,flutter組件開發(fā)

Flutter(8):基礎(chǔ)組件之Icon

Flutter 的圖標(biāo)類,它有幾個(gè)衍生的組件:ImageIcon、IconButton 等。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供普定企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為普定眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

Icon還可以架加載iconfont(字體圖標(biāo)),這種方式 和圖片相比有如下優(yōu)勢:

使用方法比較簡單

為了照顧新手小伙伴,基礎(chǔ)講解里面不會(huì)設(shè)計(jì)比較復(fù)雜的東西,后面的深入講解中再對各方面最深入解析

下一節(jié)基礎(chǔ)組件之Button

Flutter(5):基礎(chǔ)組件之Row/Column

Row:在水平方向上排列子widget的列表。

Column:在垂直方向上排列子widget的列表。

注意:這兩個(gè)屬于多子節(jié)點(diǎn)空間,可以將children排列成一行/一列,但是自身不帶滾動(dòng)屬性,如果超出了一行,在debug下面則會(huì)顯示溢出的提示。

MainAxisAlignment:主軸方向上的對齊方式,會(huì)對child的位置起作用,默認(rèn)是start。

其中MainAxisAlignment枚舉值:

center:將children放置在主軸的中心;

end:將children放置在主軸的末尾;

spaceAround:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,但是首尾child的空白區(qū)域?yàn)?/2;

spaceBetween:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,首尾child都靠近首尾,沒有間隙;

spaceEvenly:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,包括首尾child;

start:將children放置在主軸的起點(diǎn);

其中spaceAround、spaceBetween以及spaceEvenly的區(qū)別,就是對待首尾child的方式。其距離首尾的距離分別是空白區(qū)域的1/2、0、1。

MainAxisSize:在主軸方向占有空間的值,默認(rèn)是max。

MainAxisSize的取值有兩種:

max:根據(jù)傳入的布局約束條件,最大化主軸方向的可用空間;

min:與max相反,是最小化主軸方向的可用空間;

CrossAxisAlignment:children在交叉軸方向的對齊方式,與MainAxisAlignment略有不同。

CrossAxisAlignment枚舉值有如下幾種:

baseline:在交叉軸方向,使得children的baseline對齊;

center:children在交叉軸上居中展示;

end:children在交叉軸上末尾展示;

start:children在交叉軸上起點(diǎn)處展示;

stretch:讓children填滿交叉軸方向;

TextDirection:阿拉伯語系的兼容設(shè)置,一般無需處理。

VerticalDirection:定義了children擺放順序,默認(rèn)是down。

VerticalDirection枚舉值有兩種:

down:從top到bottom進(jìn)行布局;

up:從bottom到top進(jìn)行布局。

top對應(yīng)Row以及Column的話,就是左邊和頂部,bottom的話,則是右邊和底部。

TextBaseline:使用的TextBaseline的方式,有兩種,前面已經(jīng)介紹過。

這個(gè)是Row/Column的內(nèi)的小控件,可以用來實(shí)現(xiàn)權(quán)重的布局

這邊使用一個(gè)Container,里面是Row,使用Expanded對子節(jié)點(diǎn)進(jìn)行權(quán)重處理,如果不使用Expanded,直接放入其他控件也是可以的,只是無法設(shè)置權(quán)重

對于內(nèi)容過長的時(shí)候,會(huì)有溢出提示:

MainAxisAlignment.center:將children放置在主軸的中心;

MainAxisAlignment.start:將children放置在主軸的起點(diǎn);

MainAxisAlignment.end:將children放置在主軸的末尾;

MainAxisAlignment.spaceAround:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,但是首尾child的空白區(qū)域?yàn)?/2;

MainAxisAlignment.spaceBetween:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,首尾child都靠近首尾,沒有間隙;

MainAxisAlignment.spaceEvenly:將主軸方向上的空白區(qū)域均分,使得children之間的空白區(qū)域相等,包括首尾child;

下一章我們學(xué)習(xí)基礎(chǔ)組件之Image

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 全圖顯示且填充滿,圖片可能會(huì)拉伸

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

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

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

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

flutter常用組件

主要是關(guān)注decoration (裝飾) 可以設(shè)置container的屬性,這里color指的是背景色

alertdialog會(huì)返回一個(gè)結(jié)果,這樣可以通過switch或其他方法做多次彈框等其他操作

Flutter 之 可滾動(dòng)組件 -- 理論知識點(diǎn)(十四)

Flutter 中有兩種布局模型:

基于 RenderBox 的盒模型布局。

基于 Sliver ( RenderSliver ) 按需加載列表布局。

通??蓾L動(dòng)組件的子組件可能會(huì)非常多、占用的總高度也會(huì)非常大;如果要一次性將子組件全部構(gòu)建出將會(huì)非常昂貴!為此,F(xiàn)lutter中提出一個(gè)Sliver(中文為“薄片”的意思)概念,Sliver 可以包含一個(gè)或多個(gè)子組件。Sliver 的主要作用是配合:加載子組件并確定每一個(gè)子組件的布局和繪制信息,如果 Sliver 可以包含多個(gè)子組件時(shí),通常會(huì)實(shí)現(xiàn)按需加載模型。

只有當(dāng) Sliver 出現(xiàn)在視口中時(shí)才會(huì)去構(gòu)建它,這種模型也稱為“基于Sliver的列表按需加載模型”??蓾L動(dòng)組件中有很多都支持基于Sliver的按需加載模型,如 ListView 、 GridView ,但是也有不支持該模型的,如 SingleChildScrollView 。

Flutter 中的可滾動(dòng)主要由三個(gè)角色組成: Scrollable 、 Viewport 和 Sliver :

具體布局過程:

比如有一個(gè) ListView,大小撐滿屏幕,假設(shè)它有 100 個(gè)列表項(xiàng)(都是RenderBox)且每個(gè)列表項(xiàng)高度相同,結(jié)構(gòu)如圖6-1所示:

圖中白色區(qū)域?yàn)樵O(shè)備屏幕,也是 Scrollable 、 Viewport 和 Sliver 所占用的空間,三者所占用的空間重合,父子關(guān)系為:Sliver 父組件為 Viewport,Viewport的 父組件為 Scrollable 。注意ListView 中只有一個(gè) Sliver,在 Sliver 中實(shí)現(xiàn)了子組件的按需加載。

其中頂部和底部灰色的區(qū)域?yàn)?cacheExtent,它表示預(yù)渲染的高度,需要注意這是在可視區(qū)域之外,如果 RenderBox 進(jìn)入這個(gè)區(qū)域內(nèi),即使它還未顯示在屏幕上,也是要先進(jìn)行構(gòu)建的,預(yù)渲染是為了后面進(jìn)入 Viewport 的時(shí)候更絲滑。cacheExtent 的默認(rèn)值是 250,在構(gòu)建可滾動(dòng)列表時(shí)我們可以指定這個(gè)值,這個(gè)值最終會(huì)傳給 Viewport。

用于處理滑動(dòng)手勢,確定滑動(dòng)偏移,滑動(dòng)偏移變化時(shí)構(gòu)建 Viewport,我們看一下其關(guān)鍵的屬性:

在可滾動(dòng)組件的坐標(biāo)描述中,通常將滾動(dòng)方向稱為主軸,非滾動(dòng)方向稱為縱軸。由于可滾動(dòng)組件的默認(rèn)方向一般都是沿垂直方向,所以默認(rèn)情況下主軸就是指垂直方向,水平方向同理。

Viewport 比較簡單,用于渲染當(dāng)前視口中需要顯示 Sliver。

需要注意的是:

Sliver 主要作用是對子組件進(jìn)行構(gòu)建和布局,比如 ListView 的 Sliver 需要實(shí)現(xiàn)子組件(列表項(xiàng))按需加載功能,只有當(dāng)列表項(xiàng)進(jìn)入預(yù)渲染區(qū)域時(shí)才會(huì)去對它進(jìn)行構(gòu)建和布局、渲染。

Sliver 對應(yīng)的渲染對象類型是 RenderSliver,RenderSliver 和 RenderBox 的相同點(diǎn)是都繼承自 RenderObject 類,不同點(diǎn)是在布局的時(shí)候約束信息不同。RenderBox 在布局時(shí)父組件傳遞給它的約束信息對應(yīng)的是 BoxConstraints ,只包含最大寬高的約束;而 RenderSliver 在布局時(shí)父組件(列表)傳遞給它的約束是對應(yīng)的是 SliverConstraints 。關(guān)于 Sliver 的布局協(xié)議,我們將在本章最后一節(jié)中介紹。

幾乎所有的可滾動(dòng)組件在構(gòu)造時(shí)都能指定 scrollDirection (滑動(dòng)的主軸)、 reverse (滑動(dòng)方向是否反向)、 controller 、 physics 、 cacheExtent ,這些屬性最終會(huì)透傳給對應(yīng)的 Scrollable 和 Viewport,這些屬性我們可以認(rèn)為是可滾動(dòng)組件的通用屬性,后續(xù)再介紹具體的可滾動(dòng)組件時(shí)將不再贅述。

可滾動(dòng)組件都有一個(gè) controller 屬性,通過該屬性我們可以指定一個(gè) ScrollController 來控制可滾動(dòng)組件的滾動(dòng),比如可以通過ScrollController來同步多個(gè)組件的滑動(dòng)聯(lián)動(dòng)。由于 ScrollController 是需要結(jié)合可滾動(dòng)組件一起工作,所以本章中,我們會(huì)在介紹完 ListView 后詳細(xì)介紹 ScrollController。

Scrollbar是一個(gè)Material風(fēng)格的滾動(dòng)指示器(滾動(dòng)條),如果要給可滾動(dòng)組件添加滾動(dòng)條,只需將Scrollbar作為可滾動(dòng)組件的任意一個(gè)父級組件即可,如:

Scrollbar 和 CupertinoScrollbar 都是通過監(jiān)聽滾動(dòng)通知來確定滾動(dòng)條位置的。關(guān)于的滾動(dòng)通知的詳細(xì)內(nèi)容我們將在本章最后一節(jié)中專門介紹。

CupertinoScrollbar是 iOS 風(fēng)格的滾動(dòng)條,如果你使用的是Scrollbar,那么在iOS平臺(tái)它會(huì)自動(dòng)切換為CupertinoScrollbar


分享標(biāo)題:flutter全部組件,flutter組件開發(fā)
本文來源:http://weahome.cn/article/dsdiige.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部