SingleChildScrollView 源碼定義如下:

十余年的肥鄉(xiāng)網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整肥鄉(xiāng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“肥鄉(xiāng)網(wǎng)站設(shè)計”,“肥鄉(xiāng)網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
需要注意的是, 通常 SingleChildScrollView 只應(yīng)在期望的內(nèi)容不會超過屏幕太多時使用 ,這是因為 SingleChildScrollView 不支持基于 Sliver 的延遲加載模型,所以如果預(yù)計視口可能包含超出屏幕尺寸太多的內(nèi)容時,那么使用 SingleChildScrollView 將會非常昂貴(性能差),此時應(yīng)該使用一些支持Sliver延遲加載的可滾動組件,如 ListView 。
示例1
下面是一個將大寫字母 A-Z 沿垂直方向顯示的例子,由于垂直方向空間會超過屏幕視口高度,所以我們使用SingleChildScrollView:
示例2
示例3 - 橫向滾動
ListView的基礎(chǔ)創(chuàng)建使用有三種方式:
通過默認(rèn)構(gòu)造函數(shù)來創(chuàng)建列表,應(yīng)用場景 = 短列表
這種方式創(chuàng)建的列表存在一個問題:對于那些長列表或者需要較昂貴渲染開銷的子組件,即使還沒有出現(xiàn)在屏幕中但仍然會被ListView所創(chuàng)建,這將是一項較大的開銷,使用不當(dāng)可能引起性能問題甚至卡頓。
長列表
列表子項之間需要分割線
ListView的進階使用主要包括:下拉刷新 上拉加載
在Flutter中,ListView結(jié)合RefreshIndicator組件實現(xiàn)下拉刷新
通過包裹一層RefreshIndicator,自定義onRefresh回調(diào)方法實現(xiàn)
方式有兩種:
通過ListView.controller屬性可以判斷ListView是否滑動到了底部,再進行上拉加載
NotificationListener是一個Widget,可監(jiān)聽子Widget發(fā)出的Notification
ListView在滑動時中會發(fā)出ScrollNotification類型的通知,可通過監(jiān)聽該通知得到ListView的滑動狀態(tài),判斷是否滑動到了底部,從而進行上拉加載
NotificationListener有一個onNotification屬性,定義了監(jiān)聽的回調(diào)方法,通過它來處理加載更多邏輯
不定期分享關(guān)于 安卓開發(fā) 的干貨,追求 短、平、快 ,但 卻不缺深度 。
空間超出提示
注釋 :Flutter Incorrect use of ParentDataWidget
問題原因:Expanded、Flexible等組件,在“Container、Padding、Stack”組件中導(dǎo)致的。
解決方案:保持: Expanded、Flexible 只在 Row、Column 等組件內(nèi),不在其他組件內(nèi)使用。
控件Row有一個水平的布局方向,但是內(nèi)容已經(jīng)超出了可顯示的范圍。
建議我們使用有彈性的控件比如Expanded代替,或者使用可裁剪的控件ClipRect代替,還可以使用具體滾動屬性的控件比如ListView代替
1、類似圖片加載失敗,然后溢出擠壓空間,可以用Container包裹一下
直接使用,如果圖片地址失效,就會溢出
直接使用,圖片鏈接失效引起
2、類似這種超出
A RenderFlex overflowed by 48 pixels on the right.
3、類似這種Column滾動超出!
實現(xiàn)頁面滑動需要用到SingleChildScrollView組件,SingleChildScrollView和Android中ScrollView類似
問題原因:Expanded、Flexible等組件,在“Container、Padding、Stack”組件中導(dǎo)致的。
解決方案:保持:Expanded、Flexible只在Row、Column等組件內(nèi),不在其他組件內(nèi)使用。
ScrollView 是一個帶有滾動的視圖組件。
ScrollView 由三部分組成:
ScrollView 有以下常用屬性:
注:ScrollView 是一個抽象類,通常使用 CustomScrollView。
SliverAppBar 可以實現(xiàn)背景,標(biāo)題,頂部導(dǎo)航欄聯(lián)動,漸隱漸出動畫。
小菜在業(yè)務(wù)開發(fā)過程中會自定義 Slider 滑動條,而在自定義之前,小菜先簡單了解一下 Flutter 自帶的 Slider ;
簡單分析源碼可得, Slider 是一個有狀態(tài)的 StatefulWidget 組件,屬性也很清晰易懂,其中滑動過程中對應(yīng)的 value 值和 onChanged 回調(diào)是必須參數(shù);
value 未滑動過程中對應(yīng)的值,在 min 和 max 之間; onChanged 是在滑動過程中回調(diào),當(dāng) onChanged 為 null 或 value 所在的 min 和 max 集合范圍為空時, Slider 禁止滑動;
min 和 max 為滑動條范圍,而 value 的取值范圍是在 min 和 max 之間,無論 value 為正還是負(fù),均需要在 min 和 max 之間;
activeColor 為滑動條已滑動過的顏色; inactiveColor 為滑動條中未滑動的顏色;兩者均可以在 SliderTheme 中設(shè)置;
label 為滑動條滑動到某一節(jié)點的標(biāo)簽文案; divisions 是把 min 和 max 等分為 divisions 份數(shù);只有在 divisions 生效時, label 才會展示;
onChangeStart 和 onChangeEnd 分別對應(yīng)滑動過程中 value 值何時開始更改或何時完成更改時對應(yīng)的回調(diào);
Slider 的主題效果可以通過 SliderTheme 或 ThemeData.sliderTheme 中獲取更新,相較于 Slider 只提供已滑動和未滑動顏色效果,屬性粒度更細(xì);
activeTrackColor 和 inactiveTrackColor 分別對應(yīng) Slider 已滑動過和未滑動過的軌道顏色;
thumbColor 對應(yīng)滑動按鈕顏色,而 overlayColor 對應(yīng)滑動按鈕映射的疊層顏色,通常設(shè)置為半透明狀態(tài); overlayShape 對應(yīng)疊層樣式;
valueIndicatorColor 對應(yīng) label 氣泡顏色; valueIndicatorShape 對應(yīng)氣泡內(nèi)文字屬性; valueIndicatorShape 對應(yīng)氣泡樣式,可以再此進行自定義氣泡;
activeTickMarkColor 對應(yīng)已選中刻度顏色; inactiveTickMarkColor 對應(yīng)未選中刻度顏色; tickMarkShape 對應(yīng)刻度樣式;
trackHeight 為 Slider 軌道高度; trackShape 對應(yīng)軌道樣式,主要再此處進行自定義樣式;
對于不可滑動狀態(tài), SliderThemeData 提供了對應(yīng)屬性;
Slider 案例源碼
小菜本節(jié)暫未涉及自定義滑動條樣式,對于底層的 Slider 了解還不夠深入;如有錯誤,請多多指導(dǎo)!
要實現(xiàn)上面的效果,每個種類的標(biāo)簽橫向滾動,實現(xiàn)的方式,最外層的大分類標(biāo)簽一個ListView,每個分類的標(biāo)簽也是ListView 設(shè)置橫向滾動結(jié)合Wrap組件就能實現(xiàn)。
網(wǎng)站名稱:flutter滾動標(biāo)簽,flutter 滾動
本文URL:http://chinadenli.net/article47/dseiphj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、企業(yè)網(wǎng)站制作、外貿(mào)建站、電子商務(wù)、虛擬主機、小程序開發(fā)
聲明:本網(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)