shared/action_row_layout library
ONE source of truth for "the trailing element can no longer share this row"
(duplicates are bugs). Four sites carried their own copy of this
rule before #409 R3 — two of them written as scale(100) > 140, which
probes the WRONG font size (see walletTextScaleForcesStack).
The rule is deliberately layout-only: it decides GEOMETRY, never what is shown. Nothing money-bearing is ever hidden by a stack — the point is the opposite, that the copy and the figures keep the full row width when the trailing widget would otherwise starve them.
NOT exported from zec_wallet_ui.dart, unlike the rest of lib/shared/.
The other files there are widgets a host composes with; this is internal
layout policy whose constants are measured against THIS package's own
surfaces, and publishing it would freeze them as API. (A host can still
import the path directly — the package has no lib/src/ — so treat that
as unsupported rather than prevented.)
Constants
- kWalletStackRowWidth → const double
- Below this row width the same starvation happens at EVERY text scale, so width alone forces the stack.
- kWalletStackTextScale → const double
- Past this multiple of the body text size, a low-vision user's chosen size must WIN the row: the trailing action moves onto its own line rather than squeezing the text it sits beside.
Functions
-
walletRowStacksAction(
BuildContext context, double availableWidth) → bool - Whether a row that carries text plus its trailing action(s) must move them under the text. (One action on the notices, two on the parked-send and in-flight-swap rows — the more actions, the earlier the row starves.)
-
walletTextScaleForcesStack(
BuildContext context) → bool - Whether the OS text scale alone forces the trailing element onto its own line.