components/surfaces
library
Classes
-
UiAdaptiveSheetScope
-
Presents focused content as a bottom sheet on phones and a constrained
floating surface on tablet/desktop.
-
UiDrawer
-
Drawer content wrapper. Usually presented by UiDrawerScope.show.
-
UiDrawerController<T>
-
Controls an open modal drawer.
-
Standard padded footer content for a structured UiDrawer.
-
Standard header content for a structured UiDrawer.
-
UiDrawerNavigator
-
Accessor for the drawer stack owned by the current modal drawer route.
-
UiDrawerScope
-
Imperative helpers for showing a UiDrawer overlay.
-
UiDrawerSection
-
Labelled group for use inside the structured drawer body.
-
UiDrawerStackController
-
Controls the nested stack inside a single modal drawer route.
-
UiFluidBranch
-
A destination surface can contain several actions, independently of the
number of surfaces participating in the split.
-
UiFluidMorph
-
Experimental V13 morph. Geometry is expressed in this widget's local
coordinate space. The parent owns available space and overlay lifecycle.
The source and destination stay mounted; visible content stays interactive during motion.
-
UiFluidSheetAnchor<T>
-
Experimental: owns the source key for showUiFluidSheet and supplies the
undimmed source copy painted during the transition.
-
UiFluidSplit
-
Experimental emergence composition: a retained source and one or more
surfaces move apart with a diminishing geometric neck. Reverse the same
controller to merge them. Uses no blur, refraction, or shader.
-
UiFluidSurface
-
Paints a fluid surface while keeping its content at a stable layout size.
Use inside a Stack with finite bounds and room for the authored overshoot.
-
UiFluidTrigger
-
Accessible press/hold/release trigger. Place over the source surface, or
use as its content. The owning composition controls destination dismissal.
-
UiPersistentSheet
-
A non-modal, persistent bottom sheet that keeps the host body
visible and interactive — the design used by Apple Maps / Google
Maps filter panels and modern search sheets.
-
UiPersistentSheetController
-
Controls a UiPersistentSheet. Exposes imperative snap navigation
and observes snap changes via ChangeNotifier.
-
UiResponsiveNavigationScaffold
-
Navigation shell that picks a different chrome strategy per
breakpoint.
-
UiSheet
-
Canonical sheet surface — use directly inside UiSheetScope.show or
drop into a route body for non-modal presentations.
-
UiSheetBody
-
Semantic wrapper used when sheet body is split across helpers.
-
UiSheetController<T>
-
Controls an open sheet. Exposed via UiSheetScope.show so callers
can dismiss the sheet from inside the sheet body.
-
Action row pinned to the bottom of the sheet.
-
UiSheetHandle
-
Default drag-handle affordance rendered at the top of UiSheets.
-
Pre-composed header with optional title/subtitle and trailing slot.
-
UiSheetScope
-
Imperative helpers for presenting a UiSheet as a modal overlay.
-
UiSheetSnap
-
Snap-point model for UiSheet presentation.
-
Persistent navigation surface for tablet/desktop layouts.
-
Labelled cluster of items; renders an optional caption above rows.
-
Clickable sidebar row.
-
Shared node contract for sidebar children.
-
Static section with an optional header + arbitrary body widget.
-
Horizontal separator between groups/sections.
Constants
-
persistentSheetSurfaceKey
→ const ValueKey<String>
-
Test hook: identifies the sized surface that represents the current
sheet height. Exposed so integration tests can measure the rendered
sheet directly (the surrounding UiPersistentSheet fills its parent
layout and therefore reports the wrong height).
Functions
-
showUiFluidSheet<T>(BuildContext context, {required GlobalKey<State<StatefulWidget>> sourceKey, required Widget builder(BuildContext, UiSheetController<T>), WidgetBuilder? sourceBuilder, UiSheetSnap snap = const UiSheetSnap.fit(), double? maxWidth, BorderRadius? sheetBorderRadius, BorderRadius? sourceBorderRadius, Color? surfaceColor, Color? sourceColor, Color? scrimColor, bool barrierDismissible = true, bool isDismissible = true, UiFluidRouteMotion motion = const UiFluidRouteMotion(), Duration transitionDuration = const Duration(milliseconds: 612), Duration reverseTransitionDuration = const Duration(milliseconds: 480)})
→ Future<T?>
-
Experimental: presents a modal sheet that emerges from the widget under
sourceKey with the kit's fluid choreography instead of sliding up.