// 封裝一個(gè)方便的函數(shù)
static Future<T> showBottomSheet<T>(BuildContext context, Widget content) {
return showModalBottomSheet(
context: context,
isScrollControlled: true, //允許bottomSheet高度自定義
backgroundColor: Colors.transparent, //背景透明斋否,保證下面的圓角矩形裁剪有效
builder: (BuildContext c) {
return ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(12), topRight: Radius.circular(12)),
child: Container(color: Colors.white, child: content));
});
}
設(shè)置最大高度:
content = IntrinsicHeight(
child: Container(
constraints: BoxConstraints(maxHeight: maxHeight),
child: SingleChildScrollView(child: Column(children: list))));
IntrinsicHeight:高度按子控件真實(shí)高度計(jì)算梨水;
SingleChildScrollView:當(dāng)超出最大高度后,出現(xiàn)滾動(dòng)條如叼;
BottomSheet中setState失效:
因?yàn)樵搒etState并非BottomSheet的冰木,而是當(dāng)前頁面的。解決方法是笼恰,使用StatefulBuilder包裝下:
content = StatefulBuilder((c, setter){
return ...onPressed: (){ setter((){ doUpdate(); }); }...
});