diff --git a/lib/src/side_sheet_entry.dart b/lib/src/side_sheet_entry.dart index 0c8a2d7..354f1c5 100644 --- a/lib/src/side_sheet_entry.dart +++ b/lib/src/side_sheet_entry.dart @@ -33,6 +33,8 @@ class SideSheetEntry { /// A decoration widget builder which helps creating custom design. final DecorationBuilder? decorationBuilder; + final Function? dismissCallback; + SideSheetEntry({ required this.id, required this.index, @@ -43,6 +45,7 @@ class SideSheetEntry { required this.position, required this.dismissible, required this.decorationBuilder, + this.dismissCallback, }); factory SideSheetEntry.createNewElement({ @@ -58,6 +61,7 @@ class SideSheetEntry { required bool dismissible, required int index, bool initWithAnimation = true, + Function? dismissCB, }) { final key = UniqueKey(); @@ -85,6 +89,7 @@ class SideSheetEntry { position: position, dismissible: dismissible, decorationBuilder: decorationBuilder, + dismissCallback: dismissCB, ); } diff --git a/lib/src/side_sheet_host.dart b/lib/src/side_sheet_host.dart index d68a702..b297c64 100644 --- a/lib/src/side_sheet_host.dart +++ b/lib/src/side_sheet_host.dart @@ -112,6 +112,7 @@ class NestedSideSheetState extends State bool dismissible = true, Duration? animationDuration, Duration? reverseAnimationDuration, + Function? dismissCallback, }) async { if (!mounted || _blockGestures) return null; final completer = Completer(); @@ -127,6 +128,7 @@ class NestedSideSheetState extends State dismissible: dismissible, animationDuration: _setSettleDuration(animationDuration), reverseDuration: _setReverseSettleDuration(reverseAnimationDuration), + dismissCB: dismissCallback, ); _sheetEntries.add(newEntry); _notifyStateChange(); @@ -155,6 +157,7 @@ class NestedSideSheetState extends State if (_sheetEntries.last != entry) { _removeSheetSilently(entry); } + entry.dismissCallback?.call(); } _notifyStateChange();