SPScaffold class

A highly flexible, responsive wrapper around Flutter's native Scaffold.

Passes through all native Scaffold behaviors, allowing it to be used exactly like a standard Scaffold. However, it introduces intelligent responsive layout capabilities:

By providing specific breakpoints, developers can automatically transform a fly-out drawer into a permanent side navigation panel on desktop screens, display a navigationRail on tablet screens, and hide the bottomNavigationBar on larger screens—all without writing complex MediaQuery checks or duplicating widget trees.

Inheritance

Constructors

SPScaffold({Key? key, Key? scaffoldKey, PreferredSizeWidget? appBar, Widget? body, Widget? floatingActionButton, FloatingActionButtonLocation? floatingActionButtonLocation, FloatingActionButtonAnimator? floatingActionButtonAnimator, List<Widget>? persistentFooterButtons, AlignmentDirectional persistentFooterAlignment = AlignmentDirectional.centerEnd, Widget? drawer, DrawerCallback? onDrawerChanged, Widget? endDrawer, DrawerCallback? onEndDrawerChanged, Widget? bottomNavigationBar, Widget? bottomSheet, Color? backgroundColor, bool? resizeToAvoidBottomInset, bool primary = true, DragStartBehavior drawerDragStartBehavior = DragStartBehavior.start, bool extendBody = false, bool extendBodyBehindAppBar = false, Color? drawerScrimColor, double? drawerEdgeDragWidth, bool drawerEnableOpenDragGesture = true, bool endDrawerEnableOpenDragGesture = true, String? restorationId, SPBreakpoints breakpoints = SPBreakpoints.standard, SPBreakpoint? permanentDrawerBreakpoint, SPBreakpoint? permanentEndDrawerBreakpoint, Widget? navigationRail, SPBreakpoint? navigationRailBreakpoint, SPBreakpoint? hideBottomNavBreakpoint})
const

Properties

appBar PreferredSizeWidget?
final
backgroundColor Color?
final
body Widget?
final
bottomNavigationBar Widget?
final
bottomSheet Widget?
final
breakpoints SPBreakpoints
The global breakpoint definitions used to evaluate screen width.
final
drawer Widget?
final
drawerDragStartBehavior DragStartBehavior
final
drawerEdgeDragWidth double?
final
drawerEnableOpenDragGesture bool
final
drawerScrimColor Color?
final
endDrawer Widget?
final
endDrawerEnableOpenDragGesture bool
final
extendBody bool
final
extendBodyBehindAppBar bool
final
floatingActionButton Widget?
final
floatingActionButtonAnimator FloatingActionButtonAnimator?
final
floatingActionButtonLocation FloatingActionButtonLocation?
final
hashCode int
The hash code for this object.
no setterinherited
hideBottomNavBreakpoint SPBreakpoint?
The minimum breakpoint at which the bottomNavigationBar is automatically hidden. Usually set to SPBreakpoint.md so bottom navs only appear on phones. Defaults to null (never automatically hidden).
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
A widget to display as a navigation rail (a thin vertical navigation bar). Usually used on medium tablet screens.
final
The minimum breakpoint at which the navigationRail is shown. If the screen reaches the permanentDrawerBreakpoint, the rail is hidden in favor of the full drawer. Defaults to null.
final
onDrawerChanged DrawerCallback?
final
onEndDrawerChanged DrawerCallback?
final
permanentDrawerBreakpoint SPBreakpoint?
The minimum breakpoint at which the drawer becomes permanently visible alongside the body (like a desktop sidebar) rather than hidden behind a menu. Defaults to null (always utilizes native fly-out drawer behavior).
final
permanentEndDrawerBreakpoint SPBreakpoint?
The minimum breakpoint at which the endDrawer becomes permanently visible alongside the body on the right side. Defaults to null (always utilizes native right fly-out drawer behavior).
final
persistentFooterAlignment AlignmentDirectional
final
persistentFooterButtons List<Widget>?
final
primary bool
final
resizeToAvoidBottomInset bool?
final
restorationId String?
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
scaffoldKey Key?
final

Methods

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
override
createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited