From 3fe8c4043437e50898b68060ba530bad355ac9f3 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Fri, 25 Aug 2023 19:42:49 +0800 Subject: [PATCH] Add a callback for dismiss to inform the caller to implement the animation. --- lib/src/side_sheet_entry.dart | 5 +++++ lib/src/side_sheet_host.dart | 3 +++ 2 files changed, 8 insertions(+) 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();