在Flutter中,想要实现底部弹窗只需要调用这个方法:
showModalBottomSheet(context: null, builder: null)
具体使用方法:
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
color: Colors.transparent,
height: 120,
child: new Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
new ListTile(
title: Text('拍照'),
onTap: () {
_takePhoto();
Navigator.pop(context);
},
),
new ListTile(
title: Text('从相册中选择'),
onTap: () {
_openGallery();
Navigator.pop(context);
},
),
],
),
);
});
在build方法中可以自己随意编写ui,但是flutter默认在底部弹窗最大高度做了限制,不能超过屏幕高度的9/16。具体可以在源码中看出:
@override
BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
return BoxConstraints(
minWidth: constraints.maxWidth,
maxWidth: constraints.maxWidth,
minHeight: 0.0,
maxHeight: constraints.maxHeight * 9.0 / 16.0,
);
}
所以如果想要突破这个限制的高度,可以直接修改源码:
maxHeight: constraints.maxHeight
欢迎新人大佬进群交流指导:187670882