我在CustomSrollView中使用下面的SliverToBoxAdapter:
SliverToBoxAdapter(
child: Stack(
children: <Widget>[
Container(
width: double.infinity,
height: 50,
decoration: BoxDecoration(color: pink),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 30),
child: ListView.builder(
padding: const EdgeInsets.all(0),
shrinkWrap: true,
itemBuilder: (context, index) {
return buildSongRow(songs[index]);
},
itemCount: songs.length,
),
)
],
))
问题在于列表不滚动,这很明显,因为它具有框约束。我在这里使用SliverToBoxAdapter,因为我必须将列表堆叠在列表顶部的某些Container上。如何使列表滚动? 如果使用SliverToBoxAdapter无法完成此操作,我还有其他选择吗?
答案 0 :(得分:1)
您可以通过添加与父 CustomScrollView 相同的 scrollController 使 Listview 可滚动。
class ScrollExample extends StatelessWidget {
final scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return CustomScrollView(
// add scrollController to sliver root
controller: scrollController,
slivers: <Widget>[
SliverToBoxAdapter(
child: Card(
child: ListView.builder(
// add the same scrollController here
controller: scrollController,
shrinkWrap: true,
itemCount: 19,
itemBuilder: (BuildContext context, int index) {
return Text("ibnShamas");
},
),
),
),
],
);
}
}