[英]Listview.builder inside Sliver
I had a List of dynamic List of ListTile
widgets and I wanted to load it lazily, ie ListTile
will be built only when the user scrolls to that position.我有一个
ListTile
小部件的动态列表列表,我想懒惰地加载它,即只有当用户滚动到ListTile
时才会构建 ListTile。 And I achieved it using ListView.builder()
, and it was working fine for me.我使用
ListView.builder()
实现了它,它对我来说工作得很好。
But, when I wrapped that ListView.builder()
in SliverList
using SliverChildListDelegate
, the lazy loading property of Listview.builder()
is not working any more, now the whole Listview is built during initialization only, instead of being built lazily.但是,当我使用
SliverChildListDelegate
将ListView.builder()
包装在SliverList
中时, Listview.builder()
的延迟加载属性不再起作用,现在整个 Listview 仅在初始化期间构建,而不是延迟构建。
I want lazy loading in Listview.builder()
even after wrapping it with SliverList
.我想在
Listview.builder()
中延迟加载,即使在用SliverList
包装它之后也是如此。 How can I achieve that?我怎样才能做到这一点?
The code before wrapping into SliverList:-包装成 SliverList 之前的代码:-
ListView.builder(
itemCount: items.length,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
if (index == 0) return userLocationWidget;
return ListTile(items[index]);
},
),
The code after warping it into SliverList:-将其变形为 SliverList 后的代码:-
SliverList(
delegate: SliverChildListDelegate(
[
ListView.builder(
itemCount: items.length + 1,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(0.0),
itemBuilder: (BuildContext context, int index) {
if (index == 0) return userLocationWidget;
return makeCard(items[index - 1]);
},
),
],
),
),
You can used following code:您可以使用以下代码:
SliverList(delegate: SliverChildBuilderDelegate(
[
SingleChildScrollView(
child: Container(
child:ListView.builder(
itemCount: items.length + 1,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(0.0),
itemBuilder: (BuildContext context, int index) {
if (index == 0) return userLocationWidget;
return makeCard(items[index - 1]);
},
),),
)
],
),
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.