@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: <Widget>[
_firstListView(),
_secondListView(),
],
),
);
}
呼叫其他listView構建器的主類
Widget _firstListView() {
return Container(
color: Colors.green,
child: ListView.builder(
itemCount: 200,
shrinkWrap: true,
physics: const ClampingScrollPhysics(),
itemBuilder: (context, index) => RecCell(
index: index,
),
),
);
}
第一個 listView 構建器
Widget _secondListView() {
return Container(
color: Colors.red,
child: ListView.builder(
itemCount: 200,
shrinkWrap: true,
physics: const ClampingScrollPhysics(),
itemBuilder: (context, index) => ListTile(title: Text("Second $index")),
),
);
}
第二個listView構建器
RecCell是另一個有狀態的小部件,它在構建小部件時在 init 方法中列印,它在重新啟動時構建 200 次,并且在滾動時從不重新創建
我希望他們在每次父串列視圖滾動時重用任何幫助將不勝感激..
uj5u.com熱心網友回復:
好吧,將它們包裝在 aListView
中消除了延遲加載的好處ListView.builder
,因為外部ListView
希望一次加載所有子項。我認為最好的方法是將兩者的資料合并ListView.builders
為一個。雖然那時不可能將它們包裝在彩色容器中,但也許您可以通過將物品包裝在其中來獲得所需的結果。所以像:
Widget builds(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: 400,
shrinkWrap: true,
itemBuilder: (context, index) => index < 200
? Container(
color: Colors.green,
child: RecCell(
index: index,
),
)
: Container(
color: Colors.red,
child: ListTile(title: Text("Second ${index - 200}")))));
}
uj5u.com熱心網友回復:
NestedScrollView
如果您在父小部件的主體中嵌套了串列視圖,則可以使用。
uj5u.com熱心網友回復:
嘗試這個
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: <Widget>[
Container(height: 300, child: _firstListView()),
Container(height: 300, child: _secondListView()),
],
),
);
}
- - - - - -或者 - - - - - -
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
children: <Widget>[
Container(height: 300, child: _firstListView()),
Container(height: 300, child: _secondListView()),
],
),
);
}
uj5u.com熱心網友回復:
在這種情況下使用 CustomScrollView 而不是 ListViews
CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => Container(),
),
),
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => Container(),
),
),
],
);
因為ListView需要所有可用空間,并盡可能擴大自己的大小,以了解可以顯示多少子元素
uj5u.com熱心網友回復:
我這樣做并為我作業
Map<String, dynamic> d = {
0:..,listView widget,
1:[...list of widgets]
}
我正在制作一個包含我所有小部件的地圖,并且在構建方法中我回傳一個帶有這些小部件的串列視圖
return ListView(
children:[
d[0],
...d[1] // this will extract each widget from the list and insert it to list view
]
)
這樣,我的 d[0] 是水平串列視圖構建器,而 d 1是我直接添加到父串列視圖中的其他小部件,現在它們都在可見時重新呈現。必須對我以前的代碼進行一些更改
最終輸出 輸出
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506389.html