我有以下源代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
controller: scrollController,
slivers: <Widget>[
SliverList(
delegate: SliverChildBuilderDelegate(
(context, cardIndex) {
return Container(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Main Course',
style: kRestaurantMenuTypeStyle,
),
ListView.builder(
itemCount: menuCards[cardIndex].menuItems.length,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
itemBuilder: (context, itemIndex) {
return RestaurantMenuItem(
menuItem: menuCards[cardIndex].menuItems[itemIndex],
);
},
),
],
),
);
},
childCount: menuCards.length,
),
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它ListView.builder()会自动在顶部创建这个额外的空间。如下图所示。这是“主菜”和“Pancit Malabon”文本之间的大空白。
我不明白为什么ListView要这样做。如何删除空格?
Ash*_*ful 46
为了避免列表视图的这种行为,请使用零覆盖padding 属性[padding]
return ListView.builder(
padding: EdgeInsets.zero,
itemCount: data.items.length,
itemBuilder: (context, index) {}
);
Run Code Online (Sandbox Code Playgroud)
padding我通过向列表视图添加 a 解决了这个问题,如下所示:
ListView.builder(
padding: EdgeInsets.only(top: 0.0),
...
),
Run Code Online (Sandbox Code Playgroud)
我不明白为什么该解决方案有效。如果有人可以解释该错误,我可以接受他们的正确答案。
| 归档时间: |
|
| 查看次数: |
9063 次 |
| 最近记录: |