【发布时间】:2019-07-07 05:08:54
【问题描述】:
我正在尝试创建一个没有预设高度的水平滚动listview.builder()。
我尝试将 shrinkwrap 设置为 true 并将其包装在 Expanded/Flexible 中。
目前达到预期效果的唯一方法(我发现)是根据这个答案 (Flutter: Minimum height on horizontal list view) 在列内的 singlechildscrollview 内换行。
该方法的问题在于没有构建器方法可以将动态数据加载到singlechildscrollview 内的卡片中。
我的问题是我如何创建一个水平的listview,它通过嵌套在singlechildscrollview (Flutter: Minimum height on horizontal list view) 内的row 生成输出但使用构建器方法?
灵活
Scaffold(
body: Container(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Flexible(
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 3,
itemBuilder: (BuildContext context, int index) {
return FeaturedCard();
},
),
),
Flexible(
child: ListView.builder(
shrinkWrap: true,
itemCount: 10,
itemBuilder: (BuildContext context, int index) {
return FeaturedCard();
},
),
),
],
),
),
)
结果:https://i.stack.imgur.com/XKiWo.jpg
在singlechildscrollview内嵌套row(有效的方法)
Container(
padding: EdgeInsets.only(top: 16, bottom: 8),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: <Widget>[
FeaturedCard(),
FeaturedCard(),
],
),
),
],
),
)
结果: https://i.stack.imgur.com/va3TY.jpg
注意使用灵活时卡内增加的空间(这实际上在不同设备上呈现更糟)
【问题讨论】: