import 'package:flutter/material.dart'; // 弹出底部sheet Future showCustomBottomSheet({ @required BuildContext context, double radiusSize = 5.0, // 默认圆角为5 double paddingSize = 10.0, // 默认左右间距为10 String title = '', // 标题 double titleFontSize = 14, // 标题字体大小 Color titleColor = Colors.red, // 标题默认颜色 String cancelTitle = '取消', double cancelHeight = 45, double cancelFontSize = 15, Color cancelTextColor = Colors.black, List children = const [], }) { assert(context != null); return showModalBottomSheet( context: context, backgroundColor: Color(0x00ffffff), // 背景色设置为无色 elevation: 0, // 透明度 builder: (BuildContext context) { return GestureDetector( onTap: () { Navigator.pop(context, -1); }, child: Container( color: Color(0x00ffffff), // 设置颜色后点击事件才有效 alignment: Alignment.bottomCenter, padding: EdgeInsets.fromLTRB(paddingSize, 0, paddingSize, MediaQuery.of(context).padding.bottom), child: Column( mainAxisAlignment: MainAxisAlignment.end, children: [ GestureDetector( onTap: () {}, child: Container( padding: EdgeInsets.symmetric(vertical: 5, horizontal: 10), decoration: BoxDecoration( color: Colors.white, borderRadius: (children.length == 0) ? BorderRadius.all(Radius.circular(radiusSize)) : BorderRadius.only( topLeft: Radius.circular(radiusSize), topRight: Radius.circular(radiusSize))), alignment: Alignment.center, constraints: BoxConstraints( minHeight: 45, ), child: Text( title, textAlign: TextAlign.center, style: TextStyle(color: titleColor, fontSize: titleFontSize), ), ), ), Column(children: children), Container( height: 10, ), GestureDetector( onTap: () { Navigator.pop(context, 0); }, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(radiusSize))), alignment: Alignment.center, height: cancelHeight, child: Text( cancelTitle, style: TextStyle( color: cancelTextColor, fontSize: cancelFontSize), ), ), ), ], )), ); }, ); } /// 添加时候的item Widget actionItem({ @required BuildContext context, @required int index, @required String title, Color color = Colors.black, Color backgroundColor = Colors.white, double radiusSize = 5.0, // 默认圆角为5 bool isLastOne = false, // 是否为最后一个,最后一个如果有圆角的话需要增加底部圆角 double height = 45, double fontSize = 15, VoidCallback onTap, }) { assert(context != null); assert(title != null); assert(index > 0); return GestureDetector( onTap: () { onTap(); Navigator.pop(context, index); }, child: Column( children: [ /// 分割线 Divider( height: 0.5, color: Color(0xffeeeeee), ), Container( decoration: BoxDecoration( color: backgroundColor, borderRadius: isLastOne ? BorderRadius.only( bottomLeft: Radius.circular(radiusSize), bottomRight: Radius.circular(radiusSize)) : BorderRadius.all(Radius.circular(0))), alignment: Alignment.center, height: height, child: Text( title, style: TextStyle(color: color, fontSize: fontSize), ), ) ], )); }