pop_overlay 5.0.0
pop_overlay: ^5.0.0 copied to clipboard
A feature-rich package for displaying customizable pop-ups from any given widget. Featuring animated, draggable overlays, with optional background blur effects...
5.0.0 #
-
s_modoverlayinterleaving architecture hardening (modal + pop overlay coexistence):- Stabilized shared interleaving behavior between
s_modalandpop_overlayso both systems can coexist in a single overlay stack with deterministic ordering. - Consolidated root-overlay resolution paths to avoid duplicated host-resolution logic and reduce divergence risk.
- Improved host lifecycle safety to avoid duplicate interleaved host installation and unintended layer remounts during overlay reordering.
- Improved layer identity stability in interleaved rendering paths so active overlays (notably snackbars) are not remounted when unrelated layers are added/removed.
- Stabilized shared interleaving behavior between
-
Stack-level synchronization fixes:
- Fixed
pop_overlaystack-level mutations (setStackLevel,bringToFront,sendToBack) so interleaved layers are re-registered with updated effective levels immediately. - Preserved ordering consistency between activation order and stack level across interleaved updates.
- Fixed
-
s_modallifecycle and dismissal robustness improvements:- Improved dialog/sheet/snackbar coordination during dismiss flows to reduce race conditions across mixed overlay scenarios.
- Hardened snackbar-controller lifecycle behavior during interleaved modal transitions.
- Applied additional cleanup/guard logic around dismiss paths to keep active-state transitions deterministic.
-
Lifecycle observability and event filtering API additions:
- Added public lifecycle event types and payloads:
ModalLifecycleEventType,ModalLifecycleEvent. - Added optional
Modal.appBuilder(...)lifecycle hooks:onModalCreated,onModalDismissed. - Added lifecycle filtering in
appBuilder:lifecycleModalTypesandshouldNotify. - Added lifecycle listener management APIs:
Modal.addLifecycleListener(...),Modal.removeLifecycleListener(...), andModal.clearLifecycleListeners().
- Added public lifecycle event types and payloads:
-
Custom modal integration hardening:
- Promoted
ModalType.customto a first-class flow in interleaving/show/dismiss paths. - Added/solidified custom modal state checks and cleanup behavior (
Modal.isCustomActive) to keep mixed-layer dismiss transitions deterministic.
- Promoted
-
Interleaved barrier and host management improvements:
- Added single barrier-owner resolution via
OverlayInterleaveManager.topBarrierOwnerLayerId(...)to avoid compounded backdrop opacity and barrier flicker when multiple layers coexist. - Added
OverlayInterleaveManager.teardownHost(...)for reliable hard-reset cleanup in teardown/test scenarios.
- Added single barrier-owner resolution via
-
Dismiss API coverage expansion:
- Added/solidified targeted dismissal helpers for complex mixed-layer flows:
Modal.dismissCurrentModal(...),Modal.dismissSnackbarAtPosition(...),Modal.dismissByIds(...), andModal.dismissByType(...).
- Added/solidified targeted dismissal helpers for complex mixed-layer flows:
-
Testing and reliability:
- Fixed the hanging snackbar/modal interaction regression in
test/modal_background_interaction_test.dartby using deterministic pump timing around async dismissal flows. - Improved timing stability in modal background interaction tests where long-running animation controllers can make
pumpAndSettle()non-terminating. - Preserved and validated overlay ordering and interleaving behavior through the existing stack-ordering test coverage.
- Added regression coverage for lifecycle callback/listener filtering/removal and barrier-owner policy behavior across interleaved layers.
- Fixed the hanging snackbar/modal interaction regression in
-
Developer-experience cleanup:
- Commented out verbose
s_modoverlayruntime debug logs ([Modal],[OverlayInterleave],[PopOverlay],[snackbar_debug], and escape-key diagnostics) to keep console/test output clean by default.
- Commented out verbose
4.3.0 #
s_packagesdependency upgraded to ^3.6.0- Popup tap-region coordination upgrade:
- Added a shared
PopOverlayTapRegionScopeso popup content can expose a commonTapRegiongroup to nested overlays. - Updated
pop_overlayframe templates to wrap popup surfaces in the shared tap-region scope when one is available, keeping child interactions from being misclassified as outside taps. - Extended
s_context_menuands_dropdownwith optional tap-region group support so both widgets can live safely inside popups without premature dismissal. - Added regression coverage for the new tap-region inheritance flow, including dropdown and context-menu overlays.
- Added a shared
- Popup tap-region coordination upgrade:
4.2.3 #
s_packagesdependency upgraded to ^3.4.0- internal
SInkButtonwidgets now show the click cursor on web/desktop hover, giving clearer visual feedback that the widget is interactive.- Disabled
SInkButtonwidgets keep the basic cursor so non-interactive states remain visually distinct.
- Disabled
- internal
4.2.2 #
- quick
pubspec.yamlupdate
4.2.1 #
s_packagesdependency upgraded to ^3.3.1pop_overlayinteraction and layout refinements:- Added optional
TapRegionintegration toPopOverlayContent(tapRegionGroupId,onTapRegionOutside,onTapRegionInside,tapRegionBehavior,tapRegionConsumeOutsideTaps) so overlay content can participate in grouped inside/outside tap handling. - Updated the overlay activator to inherit the surrounding app theme, scroll behavior, and text direction instead of spinning up a nested
MaterialApp, improving integration inside host applications. - Improved dismissal safety by ensuring delayed removals only dispose the exact overlay instance that started exiting, preventing stale dismiss timers from removing a newer overlay that reused the same ID.
- Improved framed popup sizing with responsive width/height resolution, maximum viewport constraints, and better handling of fractional dimensions for web and constrained layouts.
- Improved drag lifecycle tracking so drag state is reset consistently on drag start/end/cancel for both popup bodies and draggable headers.
- Fixed auto-dismiss behavior to trigger
onDismissedcorrectly when overlays are made invisible on dismiss.
- Added optional
4.2.0 #
s_packagesdependency upgraded to ^3.3.0pop_overlaystack layering upgrade- Added
stackLeveltoPopOverlayContentwith defaultPopOverlayStackLevels.overlay. - Added stack APIs:
getStackLevel,setStackLevel,bringToFront,sendToBack, andactiveIdsByStackOrder. - Added stack constants helpers:
PopOverlayStackLevelsandPopOverlayStackLevelBands. - Replaced hard-coded priority-only ordering with stable effective-level sorting while preserving legacy priority bonuses for known critical overlays.
- Improved reactivation/update flow for invisible overlays when
offsetToPopFromorstackLevelchanges, including proper replacement cleanup.
- Added
4.1.0 #
s_packagesdependency upgraded to ^3.1.0
4.0.0 #
s_packagesdependency upgraded to ^3.0.0
3.3.0 #
s_packagesdependency upgraded- Improved overlay bootstrap resolution to prefer the nearest overlay context before falling back to the root overlay.
- Fixed popup positioning for framed/scaled layouts (notably web) by keeping overlays in the same coordinate space as the caller.
3.2.1 #
s_packagespackage dependency upgraded
3.2.0 #
s_packagesdependency upgraded to ^1.3.0PopOverlay.dismissAllPopsadded with optionalincludeInvisibleandexceptparametersPopOverlay.replacePopfor atomically replacing an overlay with a new one- Added query helpers:
isVisibleById,getVisiblePops,getInvisiblePops,visibleCount,invisibleCount - Added
shouldDismissOnEscapeKeyflag onPopOverlayContentto opt out of Escape key dismissal per overlay - Added
onMadeVisiblecallback onPopOverlayContent(counterpart toonMadeInvisible) - Added
onDragStartandonDragEndcallbacks onPopOverlayContent - Added
dragBoundsonPopOverlayContentto constrain dragging within aRect FrameDesignadditions:subtitleproperty for secondary text below the titletitleBarColorandbottomBarColorfor per-popup color customizationheaderTrailingWidgetsfor extra action widgets in the header
3.1.2 #
pop_overlayanimation improvements:- Added smooth fade-in animations to all popup types; fixes flash issue in
FrameDesignpopups by smoothly animating appearance during auto dynamic dimension calculation time - Extended animation durations for smoother transitions: blur background (400ms → 600ms), barrier fade (0.4-0.5s → 0.8-1.0s), and animated size (300ms → 500ms)
- Added
borderRadiussupport to example demos for better visual consistency - Optimized popup entrance animations with
Curves.fastEaseInToSlowEaseOutfor more natural motion
- Added smooth fade-in animations to all popup types; fixes flash issue in
3.1.1 #
s_packagesupgraded: Replacedpop_overlay's use ofMediaQuery.of(context).sizewithSize(100.w, 100.h)for better responsive sizing using thesizerpackage throughout the overlay system Improved cross-platform compatibility and responsive behavior
3.1.0 #
s_packagesupgraded:PopOverlay.addPop(...)upgraded to allow pops to pop from a givenoffsetToPopFromoffset param, to apopPositionOffsetparam, with a given or defaultpopPositionAnimationCurveandpopPositionAnimationDuration.
3.0.2 #
- fixed pub.dev's Documentation analysis issue
3.0.1 #
- dependent on
s_packagesversion ^1.1.2
3.0.0 #
- package no longer holds the source code for it, but exports/exposes the
s_packagespackage instead, which will hold this package's latest source code. - The only future changes to this package will be made via
s_packagespackage dependency upgrades, in order to bring the new fixes or changes to this package
2.0.0 #
- Breaking change: PopOverlay now self-installs its activator into the root overlay.
- removed static public method
PopOverlay.activator.
- removed static public method
- Added internal bootstrapper to ensure activation when
PopOverlay.addPop(...)is called.
1.0.4 #
- updated dependencies
1.0.3 #
- updated pubspec.yaml - to specify all supported platforms
1.0.2 #
- README updated
1.0.1 #
- README and demo.gif updated
1.0.0 #
- Initial release of pop_overlay package
- Flexible pop-up overlay system with automatic stacking
- Support for multiple overlays with customizable animations
- Background blur effects and tap-to-dismiss functionality
- Priority-based display ordering
- Draggable pop-up support with position tracking
- Framed Design system for consistent UI styling
- Escape key listener for keyboard dismissal
- Performance optimizations for smooth animations
- Full customization of overlay appearance and behavior