我有一个面板小部件,可以将其垂直拖动到屏幕底部或从屏幕底部垂直拖出。在该面板小部件中,有一个ListView可滚动的。
我要实现的目标是让面板处理拖动操作以进行打开和关闭,而不会干扰嵌套的listview。面板打开后,列表视图将变为可滚动状态;如果列表视图已经位于顶部,则将其向下滚动,则该面板将改为处理手势并关闭。
像这样:
我试图根据面板的位置在ListView上启用/禁用滚动物理,但是事实证明这种方式是不可能的。
有任何想法吗 ?:)
You can achieve that with DraggableScrollableSheet.
Here is a quick example of how you can use it:
@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'),
),
),
),
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)