search ESC

Searching…

No results for "".

Type at least 2 characters to search.

Docs

Cursor

Utilities for controlling the mouse cursor shown when the pointer is over an element on web and desktop targets.

Basic Usage

cursor-* maps a Tailwind cursor name to the matching native cursor and applies it through a MouseRegion. A plain WDiv can show a pointer cursor without being wrapped in WAnchor or a manual MouseRegion.

// A clickable-feeling row without WAnchor
WDiv(
  className: 'cursor-pointer px-4 py-3 rounded-lg bg-blue-500 dark:bg-blue-600',
  child: WText('Click me', className: 'text-white'),
)

The cursor is a hover affordance only; it changes how the pointer looks, not how taps are handled. Wire taps through WAnchor / WButton as usual.

Quick Reference

Class Flutter cursor
cursor-auto / cursor-default SystemMouseCursors.basic
cursor-pointer SystemMouseCursors.click
cursor-wait SystemMouseCursors.wait
cursor-progress SystemMouseCursors.progress
cursor-text SystemMouseCursors.text
cursor-vertical-text SystemMouseCursors.verticalText
cursor-move SystemMouseCursors.move
cursor-help SystemMouseCursors.help
cursor-not-allowed SystemMouseCursors.forbidden
cursor-none SystemMouseCursors.none
cursor-context-menu SystemMouseCursors.contextMenu
cursor-cell SystemMouseCursors.cell
cursor-crosshair SystemMouseCursors.precise
cursor-alias SystemMouseCursors.alias
cursor-copy SystemMouseCursors.copy
cursor-no-drop SystemMouseCursors.noDrop
cursor-grab SystemMouseCursors.grab
cursor-grabbing SystemMouseCursors.grabbing
cursor-all-scroll SystemMouseCursors.allScroll
cursor-col-resize SystemMouseCursors.resizeColumn
cursor-row-resize SystemMouseCursors.resizeRow
cursor-n-resize / cursor-e-resize / cursor-s-resize / cursor-w-resize resizeUp / resizeRight / resizeDown / resizeLeft
cursor-ne-resize / cursor-nw-resize / cursor-se-resize / cursor-sw-resize resizeUpRight / resizeUpLeft / resizeDownRight / resizeDownLeft
cursor-ew-resize / cursor-ns-resize resizeLeftRight / resizeUpDown
cursor-nesw-resize / cursor-nwse-resize resizeUpRightDownLeft / resizeUpLeftDownRight
cursor-zoom-in / cursor-zoom-out zoomIn / zoomOut

Flutter has no "auto" cursor, so cursor-auto resolves to the same basic arrow as cursor-default.

How It Works

WDiv wraps its content in a MouseRegion when a cursor-* token is present. When the WDiv also carries hover: / focus: / active: classes it is already wrapped in WAnchor (whose MouseRegion uses click only when the anchor has gesture callbacks, otherwise basic); the cursor-* MouseRegion sits deeper in the tree, so its cursor wins for the area it covers regardless of the anchor's default. Last token wins: cursor-pointer cursor-text resolves to text.

Cursors are a no-op on touch platforms (there is no pointer to style); the token is simply inert there.

Responsive Design

Combine cursor-* with breakpoint prefixes to change the affordance per viewport.

WDiv(className: 'cursor-default md:cursor-pointer')

Dark Mode

The cursor itself is theme-independent, but pair the surrounding color tokens with their dark: peers as usual.

WDiv(className: 'cursor-pointer bg-white dark:bg-gray-800')

  • WAnchor: exposes a mouseCursor constructor prop for fully imperative control.
  • Transitions: smooth state changes on hover.