MaybeSafeArea class
Keeps a compact child away from device cutouts and system UI, but only when the child reaches an unsafe edge.
Use this around floating controls, overlays, or scrolling widgets that can move near the edge of the screen. A child that is already clear of the enabled edges stays exactly where it was placed. If it overlaps one, it moves only far enough to become visible and usable again.
The avoided position is visible immediately. By default, avoidance stays current as the child scrolls or transforms. Set behavior to MaybeSafeAreaBehavior.preserve when the initial correction should instead move with an enclosing surface. Surrounding layout and scroll extent do not change. Use SafeArea when content should reflow or reserve space around unsafe areas.
See the MaybeSafeArea guide for positioning examples, edge configuration, and layout constraints.
- Inheritance
Constructors
- MaybeSafeArea({required Widget? child, MaybeSafeAreaBehavior behavior = MaybeSafeAreaBehavior.live, MaybeSafeAreaHandle? handle, bool left = true, bool top = true, bool right = true, bool bottom = true, Key? key})
-
Creates a widget that conditionally avoids unsafe view edges.
const
Properties
- behavior → MaybeSafeAreaBehavior
-
How avoidance responds after the child's first rendered position.
final
- bottom → bool
-
Whether child should avoid the bottom unsafe edge when it reaches it.
final
- child → Widget?
-
The widget below this widget in the tree.
finalinherited
- handle → MaybeSafeAreaHandle?
-
Shares corrected bounds with rendering consumers and change listeners.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- left → bool
-
Whether child should avoid the left unsafe edge when it reaches it.
final
- right → bool
-
Whether child should avoid the right unsafe edge when it reaches it.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- top → bool
-
Whether child should avoid the top unsafe edge when it reaches it.
final
Methods
-
createElement(
) → SingleChildRenderObjectElement -
RenderObjectWidgets always inflate to a RenderObjectElement subclass.
inherited
-
createRenderObject(
BuildContext context) → RenderObject -
Creates an instance of the RenderObject class that this
RenderObjectWidget represents, using the configuration described by this
RenderObjectWidget.
override
-
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
-
didUnmountRenderObject(
covariant RenderObject renderObject) → void -
This method is called when a RenderObject that was previously
associated with this widget is removed from the render tree.
The provided RenderObject will be of the same type as the one created by
this widget's createRenderObject method.
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
-
updateRenderObject(
BuildContext context, covariant RenderObject renderObject) → void -
Copies the configuration described by this RenderObjectWidget to the
given RenderObject, which will be of the same type as returned by this
object's createRenderObject.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited