[英]Listview.builder inside Sliver
我有一个ListTile
小部件的动态列表列表,我想懒惰地加载它,即只有当用户滚动到ListTile
时才会构建 ListTile。 我使用ListView.builder()
实现了它,它对我来说工作得很好。
但是,当我使用SliverChildListDelegate
将ListView.builder()
包装在SliverList
中时, Listview.builder()
的延迟加载属性不再起作用,现在整个 Listview 仅在初始化期间构建,而不是延迟构建。
我想在Listview.builder()
中延迟加载,即使在用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]);
},
),
将其变形为 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]);
},
),
],
),
),
您可以使用以下代码:
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.