showAppSideSheetPage<T> function
Future<T?>
showAppSideSheetPage<T>({
- required BuildContext context,
- required Widget child,
- AppSheetSide side = AppSheetSide.end,
- String? title,
- Widget? titleWidget,
- bool draggable = false,
- bool alwaysClose = false,
- bool showHandle = false,
- bool showCloseButton = true,
- AppSheetCloseSide? closeSide,
- VoidCallback? onCloseButton,
- VoidCallback? onClose,
- double mediumFraction = kSideSheetMediumFraction,
- double largeFraction = kSideSheetLargeFraction,
- double edgePeek = kSideSheetEdgePeek,
- AppSideSheetSnap initialSnap = AppSideSheetSnap.rest,
- bool isDismissible = true,
- AppStyle? style,
- bool? glass,
- AppRadiusMode? radiusMode,
Exibe um AppSideSheetPage como page-route (slide da borda side +
barrier). Igual a showAppSideSheet, mas a sheet é uma SideSheetPageRoute
(um PageRoute persistente) em vez de uma SideSheetRoute efêmera.
Reusa o mesmo SideSheetEngine — logo drag/snaps (40% → 70% → full),
handle, closeSide, title e footer funcionam igual. onClose dispara ao fechar
por qualquer meio.
Implementation
Future<T?> showAppSideSheetPage<T>({
required BuildContext context,
required Widget child,
AppSheetSide side = AppSheetSide.end,
String? title,
Widget? titleWidget,
Widget? footer,
bool draggable = false,
bool alwaysClose = false,
bool showHandle = false,
bool showCloseButton = true,
AppSheetCloseSide? closeSide,
VoidCallback? onCloseButton,
VoidCallback? onClose,
double mediumFraction = kSideSheetMediumFraction,
double largeFraction = kSideSheetLargeFraction,
double edgePeek = kSideSheetEdgePeek,
AppSideSheetSnap initialSnap = AppSideSheetSnap.rest,
bool isDismissible = true,
bool useRootNavigator = false,
AppStyle? style,
bool? glass,
AppRadiusMode? radiusMode,
}) {
final Future<T?> result = pushSideSheet<T>(
context: context,
side: side,
isDismissible: isDismissible,
useRootNavigator: useRootNavigator,
asPage: true,
contentBuilder: (BuildContext context) => SideSheetEngine(
side: side,
draggable: draggable,
alwaysClose: alwaysClose,
showHandle: showHandle,
showCloseButton: showCloseButton,
closeSide: closeSide,
onCloseButton: onCloseButton,
title: title,
titleWidget: titleWidget,
footer: footer,
mediumFraction: mediumFraction,
largeFraction: largeFraction,
edgePeek: edgePeek,
initialSnap: initialSnap,
style: style,
glass: glass,
radiusMode: radiusMode,
child: child,
),
);
return onClose == null ? result : result.whenComplete(onClose);
}