重新構建嵌套列表
這一節使用 Slivers 而不是 ListViews 重建相同的 UI。
前奏在這里
??https://blog.51cto.com/jianguo/4653002??
使用 Slivers 的列表列表下面的代碼構建了與之前相同的 UI,但這次它使用??Slivers?
? 而不是收縮包裝??ListView?
?對象。本頁的其余部分將引導您逐步完成更改。
如何將嵌套列表遷移到 Slivers
第1步
首先,將最外面的 ListView 更改為??SliverList?
?.
// Before
Widget build(BuildContext context) {
return ListView.builder(
itemCount: numberOfLists,
itemBuilder: (context, index) => innerLists[index],
);
}
變成:
// After
Widget build(BuildContext context) {
return CustomScrollView(slivers: innerLists);
}
第2步
其次,將內部列表的類型從??List?
?更改為 ??List?
?。
// Before
List innerLists = [];
變成:
// After
List innerLists = [];
第 3 步
現在是時候重建內部列表了。的??SliverList?
?類是比原始略有不同??ListView?
?的類,與主要差異是的外觀??delegate?
?。原始版本?
?ListView?
?對所有內容都使用對象,不知道內部構建器構造函數將被??shrinkWrap?
?.
// Before
void initState() {
super.initState();
for (int i = 0; i < numberOfLists; i++) {
final _innerList = [];
for (int j = 0; j < numberOfItemsPerList; j++) {
_innerList.add(const ColorRow());
}
innerLists.add(
ListView.builder(
itemCount: numberOfItemsPerList,
itemBuilder: (BuildContext context, int index) => _innerList[index],
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
),
);
}
}
更改后,??ListView?
?對象被替換為??SliverList?
?對象,每個對象都使用一個??SliverChildBuilderDelegate?
?來提供高效的按需構建。
// After
void initState() {
super.initState();
for (int i = 0; i < numLists; i++) {
final _innerList = [];
for (int j = 0; j < numberOfItemsPerList; j++) {
_innerList.add(const ColorRow());
}
innerLists.add(
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) => _innerList[index],
childCount: numberOfItemsPerList,
),
),
);
}
}
完整代碼:
import package:flutter/material.dart;
import dart:math as math;
void main() {
runApp(SliversApp());
}
class SliversApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: ShrinkWrap vs Slivers,
home: Scaffold(
appBar: AppBar(
title: const Text("Revenge of the Slivers"),
),
body: const ShrinkWrapSlivers(),
),
);
}
}
class ShrinkWrapSlivers extends StatefulWidget {
const ShrinkWrapSlivers({
Key? key,
}) : super(key: key);
_ShrinkWrapSliversState createState() => _ShrinkWrapSliversState();
}
class _ShrinkWrapSliversState extends State {
List innerLists = [];
final numLists = 15;
final numberOfItemsPerList = 100;
void initState() {
super.initState();
for (int i = 0; i < numLists; i++) {
final _innerList = [];
for (int j = 0; j < numberOfItemsPerList; j++) {
_innerList.add(const ColorRow());
}
innerLists.add(
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) => _innerList[index],
childCount: numberOfItemsPerList,
),
),
);
}
}
Widget build(BuildContext context) {
return CustomScrollView(slivers: innerLists);
}
}
class ColorRow extends StatefulWidget {
const ColorRow({Key? key}) : super(key: key);
State createState() => ColorRowState();
}
class ColorRowState extends State {
Color? color;
void initState() {
super.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/124254.html
相關文章
-
flutter 中的列表的性能優化前奏#yyds干貨盤點#
摘要:只有內部列表需要設置。中的列表的性能優化前奏干貨盤點而且你滑動的快的時候列表會抖動重新構建嵌套列表要了解如何使您的用戶免受卡頓威脅,請等待我的第二節,下一節將使用而不是重建相同的。 這里是堅果前端小課堂,大家喜歡的話,可以關注我的公眾號堅果前端,,或者加我好友,獲取更多精彩內容嵌套列表 - ShrinkWrap 與 Sli...
-
Flutter 中輪播圖詳解[Flutter專題31]#yyds干貨盤點#
在 Flutter 中創建圖像輪播 從社交媒體應用程序到電子商務應用程序,大多數現代應用程序都有某種圖像輪播來展示產品、圖像或廣告。 由于 flutter 提供的內置小部件,從頭開始實現圖像輪播并不像您想象的那么難。 在本文中,您將學習如何從頭開始創建圖像輪播并根據需要進行自定義。最后,您將學習如何使用carousel_slider插件以更少的代碼創建圖像輪播。 這些是我...
-
Flutter — 加快開發速度的 IDE 快捷操作#yyds干貨盤點#
摘要:夏天加快開發速度的快捷操作干貨盤點快捷方式你可以用做更多神奇的事情選項返回這是您在中加快開發速度的魔杖。加快開發速度的快捷操作干貨盤點選項卡不喜歡小部件用魔術棒取下它。 Flutter — 加快開發速度的 IDE 快捷方式上一個關于??vscode 的插件??推薦大家看的過癮不,今天繼續給大家帶來一些關于android s...
-
#yyds干貨盤點#Flutter 如何禁止手機橫屏[Flutter專題32]
摘要:最后如果不起作用,可以分別做如下設置干貨盤點如何禁止手機橫屏專題橫屏安卓如下所示干貨盤點如何禁止手機橫屏專題另外上有個插件可以去試一下,我在這兒就不做解釋了。 這里是堅果前端小課堂,歡迎關注公眾號堅果前端,問題引出 群友發來問題: Flutter 怎么禁止橫屏顯示呀,網上說的幾個方法 都沒有效 ...
-
【Flutter 專題】15 圖解 ListView 異步加載數據與等待 #yyds干貨盤點#
摘要:小菜前兩天再學時,整理了一下在列表中展示多種不同樣式,今天繼續深入學習異步請求數據并加載新聞列表以及初始進入頁面的等小知識點。小菜剛接觸時間不長,還有很多不清楚和不理解的地方,如果又不對的地方還希望多多指出。 小菜前兩天再學 ListView 時,整理了一下在列表中展示多種不同 item 樣式,今天繼續深入學習...
發表評論
0條評論
番茄西紅柿
男|高級講師
TA的文章
閱讀更多tensor
閱讀 730·2023-04-25 19:43
Windows 下安裝 XGBoost
閱讀 3974·2021-11-30 14:52
Hadoop 2.6.0 啟動問題 lib/native/libhadoop.so which mi
閱讀 3801·2021-11-30 14:52
VmShell:黑五美國VPS,免費先開通測試,滿意后付款!支持tiktok美區
閱讀 3865·2021-11-29 11:00
百度智能云:云產品特惠福利,1核2G輕量應用服務器僅48元/年
閱讀 3796·2021-11-29 11:00
Linux系統和寶塔面板如何啟用禁ping功能?
閱讀 3894·2021-11-29 11:00
301重定向怎么做?301重定向設置方法有幾種
閱讀 3571·2021-11-29 11:00
wordpress網站重定向次數過多的解決方法
閱讀 6154·2021-11-29 11:00