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

flutter布局單位,flutter 自定義布局

Flutter 屏幕適配 -- 百分比

本文是根據(jù) Daniele Cambi 的文章 Flutter — Effectively scale UI according to different screen sizes 總結(jié)而來 :

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比南沙網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式南沙網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南沙地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

文章地址 : (自備扶梯)

本文核心思想 :

作者創(chuàng)建一個(gè)矩形 :

在iPhone 5s (4" Display) and on an iPhone XS Max (6,46" Display),

顯示效果的差異 !!! 如何解決這個(gè)問題呢 ?

注: Flutter 使用的 邏輯像素 logical pixels 為單位 ,和 Android的 dp還是不一樣

具體 lp 有什么效果,網(wǎng)上也沒查到具體資料????

如何解決這個(gè)問題呢 ?

作者認(rèn)為可以把屏幕認(rèn)為是一個(gè) , 100 * 100 的格子(或者認(rèn)為水平方向和豎直方向,平均分成100個(gè)單位 ,恩 ,是不是就是Android中的百分比布局了)

作者新建一個(gè)幫助類 :

初始化方法 :

使用幫助類來設(shè)置widget大小 :

效果圖 :

在Flutter中有一個(gè)非常方便的小部件,可以有效地處理這些問題,它被稱為“安全區(qū)域”( SafeArea)。

個(gè)人理解,flutter , 把 異形屏 ,導(dǎo)航欄相關(guān)區(qū)域稱為 安全區(qū)域 。

作者的思想 :屏幕的長(zhǎng)寬去掉安全區(qū)域的大小,然后分成 100份 ,算出每一塊的單位長(zhǎng)度 。

我們可以使用 SizeConfig.safeBlockHorizontal or SizeConfig.safeBlockVertical為單位 ,對(duì)文字進(jìn)行縮放 。

真實(shí)的軟件開發(fā)過程,一般是設(shè)計(jì)人員先設(shè)計(jì)好設(shè)計(jì)圖 or 設(shè)計(jì)稿(一般是1080px * 1920px為基準(zhǔn)),然后研發(fā)人員進(jìn)行開發(fā)

那我們就把屏幕寬和長(zhǎng) ,分成 1080 和 1920 個(gè)單位 ,然后按設(shè)計(jì)圖上的標(biāo)注去填寫相應(yīng)widgets的大小

所以我認(rèn)為 flutter 非常適合百分比布局(天生適合按比例布局)

而Android 百分比布局,適配工作量非常大,兼容性差

在網(wǎng)上發(fā)現(xiàn)了一個(gè)開源庫 ,原理我覺得差不多,大家可以學(xué)習(xí)一下

flutter_screenutil

如果覺得文章有用,幫忙點(diǎn)個(gè)喜歡?? ,????????????

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

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

根據(jù)設(shè)計(jì)圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因?yàn)樯婕暗蒋B加,因此考慮用Stack;

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

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

第一行為Image,

第二行為Text,

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

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

第五行可以看作一個(gè)TextButton,

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

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

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

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

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

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

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

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

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

Flutter 布局 - Container詳解

Container的組成如下:

- width? 和? height :寬和高。

- color :背景色,值為一個(gè) Color 對(duì)象,不能與 decoration 屬性同時(shí)設(shè)置。

-? margin :外邊距,值為一個(gè) EdgeInsets 對(duì)象。EdgeInsets 對(duì)象即可調(diào)用EdgeInsets.all() 方法統(tǒng)一設(shè)置左上右下四條邊的邊距,也可以調(diào)用 EdgeInsets.fromLTRB() 分別設(shè)置左上右下四條邊的邊距。

-? padding :內(nèi)間距,值同 margin。

-? alignment :元素對(duì)齊方式

-? decoration :裝飾、背景顏色、邊框、背景圖片、等,不能與 color 屬性同時(shí)設(shè)置

-? child :子組件

-參數(shù) alignment:

topCenter :頂部居中對(duì)齊???? topLeft :頂部左對(duì)齊????? topRight :頂部右對(duì)齊 ???? center :水平垂直居中對(duì)齊 ???? centerLeft :垂直居中水平居左對(duì)齊 ???? centerRight :垂直居中水平居右對(duì)齊 ???? bottomCenter 底部居中對(duì)齊???? bottomLeft :底部居左對(duì)齊???? bottomRight :底部居右對(duì)齊

-參數(shù)?decoration :

Container參數(shù)的使用如下:

分享名稱:flutter布局單位,flutter 自定義布局
文章出自:http://chinadenli.net/article22/dsegdjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)云服務(wù)器網(wǎng)站收錄電子商務(wù)動(dòng)態(tài)網(wǎng)站手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)