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:
marker_popup.dartGestureDetectors (4 vietas, 264-422) — patvaļīgi padding'i, jāmēra reālu touch targetnotes_screen.dart:473,479—padding: EdgeInsets.zeroIconButton'i. Jāpārbauda hit area- DrawingModeFabs (
drawing_mode_fabs.dart) — visdrīzāk OK, FAB'i ir lieli, bet jāverificē - Map markers (CircleAvatar markers / drawing handles) — jāmēra dabiska zoom līmenī
- Skices saraksta tile chevrons — ekspand ikonas jābūt ≥48dp tappable
Procedūra lauka testam¶
- Atver app uz testa device'a (Samsung G970F, ~411dp width)
- Velk uzgriež cimdas (vai īkšķa mēģinājums uztaisīt 1cm × 1cm zonu)
- Iziet katru no 14 ekrāniem secīgi
- Mēģinā nospiest katru pogu/ikonu — ja kļūst nepareizi (cita ikona) vai miss → fix vajag
- 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.