NavigationRail class
A vertical or horizontal navigation rail component for sidebar navigation.
Provides a compact navigation interface typically used in sidebar layouts or as a secondary navigation element. The rail displays navigation items in a linear arrangement with configurable alignment, spacing, and label presentation. Items can show icons, labels, or both based on configuration.
The rail supports both vertical and horizontal orientations, making it suitable for various layout contexts including left/right sidebars, top/bottom navigation bars, or embedded navigation within content areas. Label presentation can be customized to show always, on selection, or never.
Integrates with the navigation theming system and supports background customization, surface effects, and responsive sizing based on content and constraints.
Example:
NavigationRail(
  direction: Axis.vertical,
  alignment: NavigationRailAlignment.start,
  labelType: NavigationLabelType.all,
  index: selectedIndex,
  onSelected: (index) => setState(() => selectedIndex = index),
  children: [
    NavigationBarItem(icon: Icon(Icons.home), label: 'Home'),
    NavigationBarItem(icon: Icon(Icons.search), label: 'Search'),
    NavigationBarItem(icon: Icon(Icons.settings), label: 'Settings'),
  ],
)
- Inheritance
- 
    - Object
- DiagnosticableTree
- Widget
- StatefulWidget
- NavigationRail
 
- Available extensions
Constructors
- 
          Creates a NavigationRail with the specified configuration and items.
            const
Properties
- alignment → NavigationRailAlignment
- 
  Alignment of items within the rail's main axis.
  final
- asBuilder → NeverWidgetBuilder
- 
      Available on Widget, provided by the WidgetExtension extension no setter
- asSliver → Widget
- 
      Available on Widget, provided by the XWidgetArcane extension no setter
- backgroundColor → Color?
- 
  Background color for the navigation rail surface.
  final
- base → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- black → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- blockQuote → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- blurIn → Widget
- 
      Available on Widget, provided by the XWidgetEffect extension no setter
- bold → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- centered → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- 
  children
  → List<NavigationBarItem> 
- 
  List of navigation items to display in the rail.
  final
- constraints → BoxConstraints?
- 
  Size constraints for the navigation rail container.
  final
- direction → Axis
- 
  Primary layout direction for the navigation rail.
  final
- ellipsis → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- expand → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- expanded → bool
- 
  Whether the rail should expand to fill available space.
  final
- extraBold → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- extraLight → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- firstP → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- flexible → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- foreground → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- h1 → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- h2 → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- h3 → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- h4 → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- hashCode → int
- 
  The hash code for this object.
  no setterinherited
- ih → Widget
- 
      Available on Widget, provided by the XWidgetArcane extension no setter
- index → int?
- 
  Index of the currently selected navigation item.
  final
- inlineCode → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- intrinsicHeight → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- intrinsicSize → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- intrinsicWidth → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- italic → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- iw → Widget
- 
      Available on Widget, provided by the XWidgetArcane extension no setter
- keepCrossAxisSize → bool
- 
  Whether to maintain intrinsic size along the cross axis.
  final
- keepMainAxisSize → bool
- 
  Whether to maintain intrinsic size along the main axis.
  final
- key → Key?
- 
  Controls how one widget replaces another widget in the tree.
  finalinherited
- labelPosition → NavigationLabelPosition
- 
  Position of labels relative to icons.
  final
- labelSize → NavigationLabelSize
- 
  Size variant for label text and overall item dimensions.
  final
- labelType → NavigationLabelType
- 
  Label display behavior for navigation items.
  final
- large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- lead → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- li → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- light → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- medium → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- modify → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- mono → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- muted → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- normal → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- 
  onSelected
  → ValueChanged<int> ?
- 
  Callback invoked when a navigation item is selected.
  final
- p → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- padding → EdgeInsetsGeometry?
- 
  Internal padding applied within the navigation rail.
  final
- primaryForeground → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- runtimeType → Type
- 
  A representation of the runtime type of the object.
  no setterinherited
- safeArea → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- sans → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- scrollable → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- scrollableHorizontal → Widget
- 
      Available on Widget, provided by the XWidget extension no setter
- secondaryForeground → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- semiBold → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- singleLine → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- small → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- spacing → double?
- 
  Spacing between navigation items.
  final
- surfaceBlur → double?
- 
  Blur intensity for surface background effects.
  final
- surfaceOpacity → double?
- 
  Opacity level for surface background effects.
  final
- textCenter → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textEnd → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textJustify → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textLarge → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textLeft → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textMuted → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textRight → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textSmall → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- textStart → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- thin → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- underline → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x2Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x3Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x4Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x5Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x6Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x7Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x8Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- x9Large → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- xLarge → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
- xSmall → TextModifier
- 
      Available on Widget, provided by the TextExtension extension no setter
Methods
- 
  animate({Key? key, List< Effect> ? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) → Animate
- 
      Available on Widget, provided by the AnimateWidgetExtensions extension Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex.myWidget.animate()is equivalent toAnimate(child: myWidget).
- 
  asSkeleton({bool enabled = true, bool leaf = false, Widget? replacement, bool unite = false, AsyncSnapshot? snapshot}) → Widget 
- 
      Available on Widget, provided by the SkeletonExtension extension Converts the widget to a skeleton with advanced configuration options.
- 
  asSkeletonSliver({bool enabled = true}) → Widget 
- 
      Available on Widget, provided by the SkeletonExtension extension Converts the widget to a skeleton suitable for sliver layouts.
- 
  ast(int ml) → Widget 
- 
  center({Key? key}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  clip({Clip clipBehavior = Clip.hardEdge}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  clipOval({Clip clipBehavior = Clip.antiAlias}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  clipPath({Clip clipBehavior = Clip.antiAlias, required CustomClipper< Path> clipper}) → Widget
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  clipRRect({BorderRadiusGeometry borderRadius = BorderRadius.zero, Clip clipBehavior = Clip.antiAlias}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  constrained({double? minWidth, double? maxWidth, double? minHeight, double? maxHeight, double? width, double? height}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  createElement() → StatefulElement 
- 
  Creates a StatefulElement to manage this widget's location in the tree.
  inherited
- 
  createState() → State< NavigationRail> 
- 
  Creates the mutable state for this widget at a given location in the tree.
  override
- 
  debugContainer([Color color = Colors.red]) → Widget 
- 
      Available on Widget, provided by the DebugContainer extension 
- 
  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
- 
  excludeSkeleton({bool exclude = true}) → Widget 
- 
      Available on Widget, provided by the SkeletonExtension extension Controls whether the widget should be preserved in skeleton mode.
- 
  expanded({int flex = 1}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  iconDestructiveForeground() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconLarge() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconMedium() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconMutedForeground() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconPrimary() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconPrimaryForeground() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconSecondary() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconSecondaryForeground() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconSmall() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconX2Large() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconX2Small() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconX3Large() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconX3Small() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconX4Large() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconX4Small() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconXLarge() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  iconXSmall() → Widget 
- 
      Available on Widget, provided by the IconExtension extension 
- 
  ignoreSkeleton() → Widget 
- 
      Available on Widget, provided by the SkeletonExtension extension Excludes the widget from skeleton effects in its parent skeleton context.
- 
  intrinsic({double? stepWidth, double? stepHeight}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  intrinsicHeight() → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  intrinsicWidth({double? stepWidth, double? stepHeight}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  isSliver(BuildContext context) → bool 
- 
      Available on Widget, provided by the XSliverWidget extension 
- 
  noSuchMethod(Invocation invocation) → dynamic 
- 
  Invoked when a nonexistent method or property is accessed.
  inherited
- 
  onDoublePressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for double press/tap gestures to this widget in Arcane UI.
- 
  onHover(void action(bool hovering)) → Widget 
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for hover events to this widget in Arcane UI.
- 
  onLongPressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for long press gestures with the primary button to this widget in Arcane UI.
- 
  onLongSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for long press gestures with the secondary button to this widget in Arcane UI.
- 
  onLongTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for long press gestures with the tertiary button to this widget in Arcane UI.
- 
  onPressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for primary press/tap gestures to this widget in Arcane UI.
- 
  onSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for secondary press gestures (right-click) to this widget in Arcane UI.
- 
  onTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set< PointerDeviceKind> ? supportedDevices}) → Widget
- 
      Available on Widget, provided by the XOnGestureWidget extension Adds a handler for tertiary press gestures (middle-click) to this widget in Arcane UI.
- 
  pad(double all) → Widget 
- 
  padBottom(double value) → Widget 
- 
  padBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) → Widget 
- 
      Available on Widget, provided by the XWidgetArcane extension 
- 
  padHorizontal(double value) → Widget 
- 
      Available on Widget, provided by the XWidgetArcane extension 
- 
  padLeft(double value) → Widget 
- 
  padOnly({double left = 0, double top = 0, double right = 0, double bottom = 0}) → Widget 
- 
  padRight(double value) → Widget 
- 
  padSliverBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) → Widget 
- 
      Available on Widget, provided by the XWidgetArcane extension 
- 
  padSliverHorizontal(double value) → Widget 
- 
      Available on Widget, provided by the XWidgetArcane extension 
- 
  padTop(double value) → Widget 
- 
  positioned({Key? key, double? left, double? top, double? right, double? bottom}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  shadeEdge(double radius) → Widget 
- 
      Available on Widget, provided by the XWidgetEdge extension 
- 
  shadeFrost(double value) → Widget 
- 
      Available on Widget, provided by the XWidgetFrost extension 
- 
  shadeInvert() → Widget 
- 
      Available on Widget, provided by the XWidgetInvert extension 
- 
  shadePixelate(double radius) → Widget 
- 
      Available on Widget, provided by the XWidgetPixelate extension 
- 
  shadePixelateBlur({int samples = 4, double pixelSize = 8, double radius = 2}) → Widget 
- 
      Available on Widget, provided by the XWidgetPixelateBlur extension 
- 
  shadeRGB({double radius = 5, double spin = 1}) → Widget 
- 
      Available on Widget, provided by the XWidgetRGB extension 
- 
  shadeWarp({double amplitude = 1, double frequency = 1, double z = 1, int octaves = 2}) → Widget 
- 
      Available on Widget, provided by the XWidgetWarp extension 
- 
  shadeWarpAnimation({double amplitude = 1, double frequency = 1, double z = 1, double zSpeed = 1, int octaves = 2}) → Widget 
- 
      Available on Widget, provided by the XWidgetWarp extension 
- 
  shimmer({bool loading = true}) → Widget 
- 
      Available on Widget, provided by the XWidgetArcane extension 
- 
  sized({double? width, double? height}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  sized({double? width, double? height}) → Widget 
- 
  then(InlineSpan span) → Widget 
- 
      Available on Widget, provided by the TextExtension extension 
- 
  thenButton({required VoidCallback onPressed, required Widget child}) → Widget 
- 
      Available on Widget, provided by the TextExtension extension 
- 
  thenInlineCode(String text) → Widget 
- 
      Available on Widget, provided by the TextExtension extension 
- 
  thenText(String text) → Widget 
- 
      Available on Widget, provided by the TextExtension extension 
- 
  toBox(BuildContext context, {bool softWarn = true}) → Widget 
- 
      Available on Widget, provided by the XSliverWidget extension 
- 
  toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode 
- 
  Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
  inherited
- 
  toSliver(BuildContext context, {bool fillRemaining = false, bool softWarn = true}) → Widget 
- 
      Available on Widget, provided by the XSliverWidget extension 
- 
  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
- 
  transform({Key? key, required Matrix4 transform}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  withAlign(AlignmentGeometry alignment) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  withMargin({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  withOpacity(double opacity) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  withPadding({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all, EdgeInsetsGeometry? padding}) → Widget 
- 
      Available on Widget, provided by the WidgetExtension extension 
- 
  withTooltip(String tooltip) → Widget 
- 
      Available on Widget, provided by the XWidgetArcane extension 
Operators
- 
  operator ==(Object other) → bool 
- 
  The equality operator.
  inherited