sortable library

Classes

DetailButton
The trailing button of a row whose tap does something else, held to the DisclosureIndicator's box since a desktop's compact density would shrink a bare IconButton and pull its glyph off the column.
DisclosureIndicator
Marks a row whose tap opens a page, sized like the handle that replaces it in sort mode so the two share a center.
ReorderDragStartListener
A mouse drags on the vertical axis alone, which leaves a sideways drag to a switch in the row and beats a mouse drag's scroll by being nearer the pointer.
SortableItem
While the SortModeScope above sorts, DecorationListItem and ContextMenuRegion below give up their taps and menus, and the trailing turns into a SortHandle.
SortableTrailing
The handle springs in from the row's trailing edge, where the card clips it, while the trailing it replaces shrinks away and the title gives up the width; leaving, the handle slides back out before the trailing pops back. Only a change of width relayouts the row: the motion itself is painted, since a rebuild here would relayout the row from its LayoutBuilder and a fade would put it on a layer of its own.
SortHandle
Its row drags; with focus, a select key lifts the row and the up and down keys move it, so a remote or a keyboard can sort without a pointer.
SortModeScope
The sort mode a page's scaffold keeps for its body, or a section keeps for its own rows.

Typedefs

SortableItemData = ({int index, bool sorting})