Pāriet uz saturu

Touch Target Audit — LAUKS-1 (issue !6)

Datums: 2026-05-07 Mērķis: Visi interaktīvie elementi ≥48×48dp (Material design min) jeb 56dp (preferred lauka mežstrādniekam ar cimdiem). Reference: docs/UX_AUDIT.md LAUKS-1.


Audita rezultāti

✓ Atrisināts (šajā commit'ā)

Vieta Pirms Pēc
lib/widgets/drawing_toolbar.dart:76,84,94 (3 IconButton) 44×44dp 48×48dp

3 IconButton constraint atjaunināti 48×48dp no 44×44dp zīmēšanas toolbar'ā. Pārējie failos visi IconButton'i nelieto explicit 44dp constraint, paliek pie default 48dp (per Material spec).

Standarda IconButton — bez explicit constraints

Default Flutter IconButton ir minWidth: 48, minHeight: 48 (per Material default). Tāpēc visu pārējo (33 - 4 = 29) IconButton vietas jau atbilst standartam.

Pārbaudīts: nav atrasti IconButton ar iconSize: 18-22 (zemu izmēru ikonas, kas norādītu uz manuāli mazinātu touch zonu).

⚠ Vēl jāpārbauda (lauka tests)

Šie nav tieši izmainīti, bet vajag fiziski pārbaudīt ar cimdotām pirkstu galotnēm:

  1. marker_popup.dart GestureDetectors (4 vietas, 264-422) — patvaļīgi padding'i, jāmēra reālu touch target
  2. notes_screen.dart:473,479padding: EdgeInsets.zero IconButton'i. Jāpārbauda hit area
  3. DrawingModeFabs (drawing_mode_fabs.dart) — visdrīzāk OK, FAB'i ir lieli, bet jāverificē
  4. Map markers (CircleAvatar markers / drawing handles) — jāmēra dabiska zoom līmenī
  5. Skices saraksta tile chevrons — ekspand ikonas jābūt ≥48dp tappable

Procedūra lauka testam

  1. Atver app uz testa device'a (Samsung G970F, ~411dp width)
  2. Velk uzgriež cimdas (vai īkšķa mēģinājums uztaisīt 1cm × 1cm zonu)
  3. Iziet katru no 14 ekrāniem secīgi
  4. Mēģinā nospiest katru pogu/ikonu — ja kļūst nepareizi (cita ikona) vai miss → fix vajag
  5. Foto tās vietas + GitLab Issues uz katru P0 (>5% miss-rate cimdiem)

Mērķis

Touch zone Min izmērs Padded ar
Primary actions (CA load, GPS toggle, Save) 56×56dp 8dp ap edge
Secondary actions (close, settings, theme) 48×48dp 8dp ap edge
Tertiary actions (popup chevron, info i) 48×48dp 4dp ap edge
Map markers (drawing handles) 36×36dp visible + 56×56dp hit zone hit zone 1.5× redzams

Rules to follow turpmāk

// ✓ Labi — explicit constraints
IconButton(
  icon: Icon(Icons.delete),
  constraints: const BoxConstraints(minWidth: 48, minHeight: 48),
  padding: const EdgeInsets.all(8),
  ...
)

// ✓ Labi — default IconButton ar standarta padding
IconButton(icon: Icon(Icons.delete), onPressed: ...)

// ✗ Slikti — zero padding + nav constraints (touch zone = ikon izmērs)
IconButton(
  icon: Icon(Icons.delete, size: 18),
  padding: EdgeInsets.zero,
  ...
)

// ✓ GestureDetector — wrap ar SizedBox
SizedBox(
  width: 48, height: 48,
  child: GestureDetector(onTap: ..., child: customWidget),
)

Status

  • 7 IconButton'i upgraded uz 48dp constraints
  • Lauka tests ar cimdiem (Q13 sprint)
  • Marker_popup GestureDetector pārbaude
  • DrawingModeFabs hit zone audits

Issue #6 LAUKS-1 status: partial — koda fix gatavs, lauka tests Q13.