presentBottomSheet<T> function
Future<T?>
presentBottomSheet<T>({
- required BuildContext context,
- required WidgetBuilder builder,
- double scrollControlDisabledMaxHeightRatio = 1,
- Color? backgroundColor,
- Color? barrierColor,
- BoxBorder? border,
- bool useSafeArea = true,
- BorderRadius? borderRadius,
- WidgetBuilder? iconBuilder,
Implementation
Future<T?> presentBottomSheet<T>({
required BuildContext context,
required WidgetBuilder builder,
double scrollControlDisabledMaxHeightRatio = 1,
Color? backgroundColor,
Color? barrierColor,
BoxBorder? border,
bool useSafeArea = true,
BorderRadius? borderRadius,
WidgetBuilder? iconBuilder,
GlobalKey<NavigatorState>? navigatorKey,
}) {
return showModalBottomSheet<T>(
context: navigatorKey?.currentContext ?? context,
backgroundColor: backgroundColor,
scrollControlDisabledMaxHeightRatio: scrollControlDisabledMaxHeightRatio,
barrierColor: barrierColor,
useSafeArea: useSafeArea,
useRootNavigator: true,
// isScrollControlled: true,
builder: (innerContext) {
return BackdropFilter(
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Flexible(
child: Container(
decoration: BoxDecoration(
color: backgroundColor,
border: border,
borderRadius: borderRadius,
),
clipBehavior: Clip.hardEdge,
// elevation: 2,
child: SafeArea(
child: Stack(children: [
Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.viewInsetsOf(innerContext).bottom),
child: builder(innerContext),
),
if (iconBuilder != null)
Positioned(
top: 24,
right: 20,
child: InkWell(
onTap: () {
Navigator.maybePop(innerContext);
},
borderRadius: BorderRadius.circular(12),
child: Container(
height: 24,
width: 24,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),
color: Colors.white.withValues(alpha: 0.1)),
child: iconBuilder(innerContext),
),
),
),
]),
),
),
),
],
),
);
},
);
}