showDrawerGeneral<T> static method
Implementation
static Future<T?> showDrawerGeneral<T>({
required GeneralParamsDrawer? params,
required Widget content,
}) async {
var mediaQuery = MediaQuery.of(params!.context);
return await showModalBottomSheet(
context: params.context,
builder: (context) {
return ClipRRect(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(params.radius ?? 8),
topRight: Radius.circular(params.radius ?? 8),
),
child: SingleChildScrollView(
child: Container(
width: double.infinity,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(params.radius ?? 8),
topRight: Radius.circular(params.radius ?? 8),
),
),
padding: const EdgeInsets.only(top: 10),
child: Column(
children: [
/// strips
Visibility(
visible: params.withStrip,
child: Container(
width: 65,
height: 6,
margin: const EdgeInsets.only(bottom: 10),
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(
Radius.circular(2.5),
),
color: params.withStrip ? const Color(0xffe8e8e8) : Colors.transparent,
),
),
),
/// header
if (params.isUseHeader)
Padding(
padding: const EdgeInsets.all(16).copyWith(top: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
params.titleHeader ?? "",
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
color: VentColorSwatch.Gray.shade900,
),
),
if (params.subTitleHeader != null &&
(params.subTitleHeader ?? "").trim().isNotEmpty)
Text(
params.subTitleHeader ?? "",
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
color: VentColorSwatch.Gray.shade700,
),
),
],
),
InkWell(
onTap: () {
if (params.onTapIconClose != null) {
params.onTapIconClose?.call();
}
Navigator.pop(context);
},
child: const Icon(
Icons.close,
size: 24.0,
),
),
],
),
],
),
),
if (params.isUseHeader) const Divider(),
/// content
Column(
children: [
/// content
Padding(
padding: params.padding ?? const EdgeInsets.symmetric(horizontal: 20),
child: content,
),
SizedBox(
height: mediaQuery.padding.bottom + (params.paddingBottom ?? 0.0),
)
],
),
],
),
),
),
);
},
isDismissible: params.isDismissable,
backgroundColor: Colors.transparent,
enableDrag: params.enableDrag,
isScrollControlled: params.isScrollControlled,
routeSettings: params.settings,
);
}