我有一个面板小部件,可以将其垂直拖动到屏幕底部。在该面板小部件中,有一个ListView
可滚动。
我要实现的目标是,让面板处理拖动以进行打开和关闭,而不会干扰嵌套的listview。面板一旦打开,列表视图就可以滚动;如果列表视图已经位于顶部,则将其向下滚动,则面板将处理该手势并关闭。
像这样:
我试图根据面板的位置在ListView上启用/禁用滚动物理,但事实证明这种方式是不可能的。
有什么想法吗? :)
答案 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'),
),
),
),
),
],
),
);
}