showBsModal<T> function
Future<T?>
showBsModal<T>({
- required BuildContext context,
- required WidgetBuilder builder,
- BsBackdrop backdrop = BsBackdrop.enabled,
- bool keyboard = true,
- bool centered = false,
Helper function to display a Bootstrap-style Modal dialog.
Integrates backdrop controls (closing on click, static animation) and keyboard events (Escape key closes dialog).
Implementation
Future<T?> showBsModal<T>({
required BuildContext context,
required WidgetBuilder builder,
BsBackdrop backdrop = BsBackdrop.enabled,
bool keyboard = true,
bool centered = false,
}) {
final showBackdrop = backdrop != BsBackdrop.disabled;
final alignment = centered ? Alignment.center : Alignment.topCenter;
return showGeneralDialog<T>(
context: context,
barrierDismissible: false,
barrierLabel: 'Dismiss',
barrierColor: Colors.transparent,
transitionDuration: const Duration(milliseconds: 300),
pageBuilder: (context, animation, secondaryAnimation) {
return builder(context);
},
transitionBuilder: (context, animation, secondaryAnimation, child) {
final slideAnimation = Tween<Offset>(
begin: const Offset(0, -0.05),
end: Offset.zero,
).animate(CurvedAnimation(
parent: animation,
curve: Curves.easeOut,
));
return _BsModalBackdropWrapper(
animation: animation,
backdrop: backdrop,
showBackdrop: showBackdrop,
alignment: alignment,
keyboard: keyboard,
child: FadeTransition(
opacity: animation,
child: SlideTransition(
position: slideAnimation,
child: Material(
color: Colors.transparent,
type: MaterialType.transparency,
child: child,
),
),
),
);
},
);
}