flutter灰色,flutter常見問題

Flutter 之 可滾動組件 -- 理論知識點(十四)

Flutter 中有兩種布局模型:

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、紅花崗網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、成都做商城網(wǎng)站、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為紅花崗等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

基于 RenderBox 的盒模型布局。

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

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

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

Flutter 中的可滾動主要由三個角色組成: Scrollable 、 Viewport 和 Sliver :

具體布局過程:

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

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

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

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

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

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

需要注意的是:

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

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

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

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

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

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

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

Flutter IDEA中右鍵flutter菜單灰色解決方法

這個問題是應(yīng)為用老的flutter sdk創(chuàng)建的項目,然后更新了flutter sdk.

老的flutter sdk創(chuàng)建的工程android目錄里面是android.iml文件。新的應(yīng)該是projectname_android.iml

改一下名字就可以了

Flutter去除底部虛擬按鍵方法

在Scaffold中加入這一行 resizeToAvoidBottomPadding:false

網(wǎng)上有這個方法SystemChrome.setEnabledSystemUIOverlays([]); 去除頂部和底部,但是在小米4平板上底部還是有灰色的高度,加上上邊的方法就好了?

在flutter中,從后臺調(diào)取的數(shù)據(jù)是拼音,怎么把它轉(zhuǎn)換成漢字呢???求代碼

想要在WPS表格中把漢字轉(zhuǎn)換成拼音或小寫字母,只需要運用模塊代碼編輯功能就能輕松解決,具體操作方法如下:

步驟1、打開要轉(zhuǎn)換成拼音的excel表格,按“Alt+F11”組合鍵,進入Visual Basic編輯狀態(tài)。也就是看到的這個灰色的編輯界面。

步驟2、執(zhí)行“插入→模塊”命令,插入一個新模塊。再雙擊插入的模塊,進入模塊代碼編輯狀態(tài)。

步驟3、看到如下界面。

步驟4、把下面的所有內(nèi)容復(fù)制,粘貼到步驟4中的空白處。

Function?pinyin(p?As?String)?As?String

i?=?Asc(p)

Select?Case?i

Case?-20319?To?-20318:?pinyin?=?"a?"

Case?-20317?To?-20305:?pinyin?=?"ai?"

Case?-20304?To?-20296:?pinyin?=?"an?"

Case?-20295?To?-20293:?pinyin?=?"ang?"

Case?-20292?To?-20284:?pinyin?=?"ao?"

Case?-20283?To?-20266:?pinyin?=?"ba?"

Case?-20265?To?-20258:?pinyin?=?"bai?"

Case?-20257?To?-20243:?pinyin?=?"ban?"

Case?-20242?To?-20231:?pinyin?=?"bang?" ?

Case?-20230?To?-20052:?pinyin?=?"bao?"

Case?-20051?To?-20037:?pinyin?=?"bei?"

Case?-20036?To?-20033:?pinyin?=?"ben?"

Case?-20032?To?-20027:?pinyin?=?"beng?"

Case?-20026?To?-20003:?pinyin?=?"bi?"

Case?-20002?To?-19991:?pinyin?=?"bian?"

Case?-19990?To?-19987:?pinyin?=?"biao?"

Case?-19986?To?-19983:?pinyin?=?"bie?"

Case?-19982?To?-19977:?pinyin?=?"bin?"

Case?-19976?To?-19806:?pinyin?=?"bing?"

Case?-19805?To?-19785:?pinyin?=?"bo?"

Case?-19784?To?-19776:?pinyin?=?"bu?"

Case?-19775?To?-19775:?pinyin?=?"ca?"

Case?-17721?To?-17704:?pinyin?=?"he?"

Case?-17703?To?-17702:?pinyin?=?"hei?"

Case?-17701?To?-17698:?pinyin?=?"hen?"

Case?-17697?To?-17693:?pinyin?=?"heng?"

Case?-17692?To?-17684:?pinyin?=?"hong?"

Case?-17683?To?-17677:?pinyin?=?"hou?"

Case?-17676?To?-17497:?pinyin?=?"hu?"

步驟5、按下ALT+Q關(guān)閉Visual Basic編輯窗口,返回Excel編輯狀態(tài)。

步驟6、選中轉(zhuǎn)換后的拼音需要放在哪個列,例如要把B列的第2行的內(nèi)容轉(zhuǎn)換成拼音,放在D列的第2個單元格,輸入公式:=getpy(B2),這里的B2,是指源頭單元格的坐標(biāo)。

步驟7、如果要去除拼音之間的空格。去掉空格的拼音放在E列,如果這個未去掉空格的數(shù)據(jù)原來在D2單元格,去掉空格之后的拼音放在E2單元格,則在E2單元格輸:?=SUBSTITUTE(D2," ","")。

本文標(biāo)題:flutter灰色,flutter常見問題
轉(zhuǎn)載源于:http://muchs.cn/article6/phedig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、建站公司、網(wǎng)站收錄商城網(wǎng)站、響應(yīng)式網(wǎng)站、網(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ā)