滑动面板内的嵌套ScrollView小部件

时间:2019-10-22 20:24:11

标签: flutter

我有一个面板小部件,可以将其垂直拖动到屏幕底部。在该面板小部件中,有一个ListView可滚动。

我要实现的目标是,让面板处理拖动以进行打开和关闭,而不会干扰嵌套的listview。面板一旦打开,列表视图就可以滚动;如果列表视图已经位于顶部,则将其向下滚动,则面板将处理该手势并关闭。

像这样:

enter image description here

我试图根据面板的位置在ListView上启用/禁用滚动物理,但事实证明这种方式是不可能的。

有什么想法吗? :)

1 个答案:

答案 0 :(得分:5)

您可以使用DraggableScrollableSheet来实现。

以下是使用方法的快速示例:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Stack(
      children: <Widget>[
        Center(child: Text('Some content')),
        DraggableScrollableSheet(
          minChildSize: 0.2,
          initialChildSize: 0.2,
          builder: (context, scrollController) => Container(
            color: Colors.lightBlueAccent,
            child: ListView.builder(
              controller: scrollController,
              itemCount: 20,
              itemBuilder: (context, index) => SizedBox(
                height: 200,
                child: Text('Item $index'),
              ),
            ),
          ),
        ),
      ],
    ),
  );
}