Package selection guidance compiled from public package information, community data, and project usage.
Backdrop is a Flutter package that implements the Material Design Backdrop component, enabling smooth transitions between a main content area and a secondary panel (like a drawer or sheet). It supports interactive backdrops with parallax effects and customizable animations. Designed for use on Android, iOS, Web, macOS, Windows, and Linux, it enhances user experience by providing intuitive navigation and layered interfaces. The package integrates seamlessly into Flutter apps using standard widget patterns.
Use cases
Creating sliding side panels
Implementing interactive backdrops with parallax
Building responsive navigation drawers
Enhancing UI depth with layered layouts
Designing mobile-first interface components
Key features
Parallax scrolling effect
Smooth transition animations
Customizable backdrop behavior
Supports multiple platforms
Built-in gesture handling
Extensible widget structure
Suitable for
Mobile app developers
UI/UX designers using Material Design
Apps needing layered navigation
Developers building complex bottom sheets
Teams focused on polished user interactions
Considerations
Requires understanding of Flutter's animation system
May impact performance on low-end devices
Needs careful design to avoid clutter
Limited customization beyond basic configurations
Best suited for specific layout patterns rather than general use
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
backdrop
ARCHIVE NOTE: Backdrop was based on the Material 2 Backdrop specification, which is no longer actively maintained. Material 3 does not include a Backdrop specification. As a result, this package is no longer actively developed and is limited to maintenance and critical fixes.
To use backdrop for navigation, use the provided BackdropNavigationBackLayer as backLayer.
The BackdropNavigationBackLayer contains a property items representing the list elements shown on the back layer. The front layer has to be "manually" set depending on the current index, which can be accessed with the onTap callback.
To access backdrop related functionalities, use Backdrop.of(context) to get underlying BackdropScaffoldState.
BackdropScaffoldState exposes various properties and methods like:
properties
animationController -> AnimationController
scaffoldKey -> GlobalKey<ScaffoldState>
isBackLayerConcealed -> bool
isBackLayerRevealed -> bool
methods
fling()
concealBackLayer()
revealBackLayer()
Note:Backdrop is an InheritedWidget and therefore like Scaffold.of, Theme.of and MediaQuery.of, the BuildContext context passed to Backdrop.of(context) should be of a Widget that is under the BackdropScaffold in the "widget tree". In other words, Backdrop.of called inside a widget where the BackdropScaffold is initalized will not work explicitly, since the context passed is of the widget that will build BackdropScaffold therefore above BackdropScaffold. This can be solved by either making a seperate Widget where Backdrop.of needs to be used and make it the "child" of BackdropScaffold or wrap the Backdrop.of usage around Builder widget so that the "correct" context (from Builder) is passed to Backdrop.of. This answere on SO and FWotW video on Builder gives a very good idea of how and why Builder works in later case.