解决方案:
1、 升级到新版本的Flutter,当前目前使用版本是1.22.5及以后就可
2、源码解读,官方调整原来写死比例的方案:
@override
BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
return BoxConstraints(
minWidth: constraints.maxWidth,
maxWidth: constraints.maxWidth,
minHeight: 0.0,
maxHeight: isScrollControlled //这个字段默认为false,设置成true达到自定义高度的目的
? constraints.maxHeight
: constraints.maxHeight * 9.0 / 16.0,
);
}
3、实战中只要将isScrollControlled方法设置为true,然后重新设置一下builder里面的布局高度就可解决:
showModalBottomSheet<int>(
context: context,
isScrollControlled: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30), topRight: Radius.circular(30)),
),
builder: (BuildContext context) {
return Container(
height: 580,//这里调整高度即可,建议按照屏幕高度比例来计算
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30), topRight: Radius.circular(30)),
),
);
},
);