OudsListItem class

OUDS List Item Design Guidelines

Reference design version : 1.0.0

List item is a UI element that displays a row of information within a list. It mirrors Flutter's ListTile spirit — leading / label / trailing — but uses OUDS design tokens, interaction states and an optional navigation indicator.

A list item can be static (read-only) or interactive (navigation). The item adapts its visual appearance according to hover, pressed and disabled states.


Variants

  • Static — no onTap, displays read-only information. No interaction states.
  • Navigation — provide onTap to make the item interactive. The entire item acts as a single link target and supports the following interaction states:
    • Enabled — default state; the item is available for navigation.
    • Hover — visual feedback when a pointer is over the item. Does not move content, change dimensions, or reveal hidden information.
    • Focus — keyboard focus indicator drawn around the complete navigation target (background + border ring via actionSupportFocus / actionFocus).
    • Pressed — temporary state while the item is being activated, applied to the entire navigation target.

Parameters

  • label: The mandatory main text displayed in the center column.
  • size: Size variant (OudsListItemSize.defaultSize or OudsListItemSize.smallSize).
  • contentAlignment: Vertical alignment of all slots within the row (OudsListItemContentAlignment).
  • overline: Optional text displayed above label in a smaller, muted style.
  • extraLabel: Optional strong label displayed between label and description.
  • description: Optional secondary text displayed below label / extraLabel.
  • leading: Optional content at the start of the row (icon, image, avatar, flag …).
  • trailing: Optional content at the end of the row (icon, image, text, badge, tag …).
  • divider: Whether a horizontal divider is drawn below the item. Defaults to true.
  • background: Whether the item has a persistent background color. Defaults to false. Set to true when the item should keep a filled surface even when idle.
  • decoration: Optional explicit decoration override. When provided, it takes precedence over the legacy background / divider mapping.
  • helperText: Optional helper text displayed below the row (and below the divider).
  • boldLabel: Whether label is rendered in bold. Defaults to false.
  • enable: Whether the item is interactive. When false, all content is rendered in its disabled appearance and onTap is ignored. Defaults to true.
  • onTap: Callback invoked when the item is tapped. When non-null the item becomes a navigation item — it gains an indicator and forwards taps.
  • indicator: Navigation indicator shown when onTap is provided. Defaults to OudsListItemDefaults.indicator (chevron pointing right).
  • card: Whether the item should use the card decoration and rounded shape. Defaults to false.

Usage Example

// Static list item with a leading icon
OudsListItem(
  label: 'Title',
  description: 'Secondary text',
  leading: OudsListItemLeadingIcon(Neutral(icon: 'assets/icons/star.svg')),
  background: true,
);

// Navigation list item (chevron displayed automatically)
OudsListItem(
  label: 'Navigate',
  onTap: () => Navigator.of(context).push(…),
);

// List item with overline, extra label and trailing text
OudsListItem(
  label: 'Main label',
  overline: 'Category',
  extraLabel: 'Strong info',
  description: 'Additional detail',
  trailing: OudsListItemTrailingText(
    OudsListItemTrailingLabel('99€'),
  ),
);

// Disabled list item
OudsListItem(
  label: 'Unavailable',
  enable: false,
);
Inheritance

Constructors

OudsListItem({Key? key, required String label, OudsListItemSize size = OudsListItemSize.defaultSize, OudsListItemContentAlignment contentAlignment = OudsListItemDefaults.contentAlignment, String? overline, String? extraLabel, String? description, OudsListItemLeading? leading, OudsListItemTrailing? trailing, bool divider = true, bool background = false, OudsListItemDecoration? decoration, String? helperText, bool boldLabel = false, bool enable = true, VoidCallback? onTap, OudsListItemIndicator indicator = OudsListItemDefaults.indicator, bool card = false, bool edgeToEdge = true})
Creates an OUDS list item.
const

Properties

background bool
Whether the item has a persistent background color. Defaults to false.
final
boldLabel bool
Whether label is rendered in bold. Defaults to false.
final
card bool
Whether the item should use the card decoration and rounded shape.
final
contentAlignment OudsListItemContentAlignment
Vertical alignment of all slots. Defaults to OudsListItemContentAlignment.center.
final
decoration → OudsListItemDecoration?
Optional explicit decoration override.
final
description String?
Optional secondary text displayed below label / extraLabel.
final
divider bool
Whether a horizontal divider is drawn below the item. Defaults to true.
final
edgeToEdge bool
Controls the horizontal layout of the item.
final
enable bool
Whether the item is interactive. Defaults to true.
final
extraLabel String?
Optional strong accompanying label displayed between label and description.
final
hashCode int
The hash code for this object.
no setterinherited
helperText String?
Optional helper text displayed below the row (and below the divider).
final
indicator → OudsListItemIndicator
Navigation indicator shown when onTap is provided.
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
label String
The mandatory main label displayed in the center column.
final
leading OudsListItemLeading?
Optional content at the start of the row (icon, image, avatar, flag …).
final
onTap VoidCallback?
Callback invoked when the item is tapped.
final
overline String?
Optional text displayed above label in a smaller, muted style.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
size OudsListItemSize
Size variant. Defaults to OudsListItemSize.defaultSize.
final
trailing OudsListItemTrailing?
Optional content at the end of the row (icon, image, text, badge, tag …).
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<OudsListItem>
Creates the mutable state for this widget at a given location in the tree.
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
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