如何在SliverToBoxAdapter中具有可滚动列表

时间:2019-06-30 06:28:41

标签: list flutter dart scrollable flutter-sliver

我在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无法完成此操作,我还有其他选择吗?

1 个答案:

答案 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");
              },
            ),
          ),
        ),
      ],
    );
  }
}