tapAt method

Future<void> tapAt(
  1. Offset at, {
  2. Shot? shot,
  3. Settle? settle,
})

Taps a point rather than a widget — the same press as tap, aimed where no finder can reach.

The zones of an SVG, a chart or a map are painted rather than built, so they share one widget and one box, and tap on that box presses its centre. Only a coordinate says which zone was meant, and before this the nearest way to say one was dragFrom(at, Offset.zero) — the right gesture arrived at sideways, and a step that reads dragFrom in the report for what the author meant as a tap.

tap(Target.at(x, y)) is the same press by another name — see _aimFor, which is the one rule both go through. What this spelling has is that it needs no widget to resolve, and that the step it writes says what the author meant.

The coordinates are the ones every box in a report is in: the view's logical pixels, top-left origin — what a step's aim rectangle reads back in, so a point can be lifted straight off one.

It makes the same trade dragFrom makes: there is no target to prove reachable, so it goes where it is told, and a point over nothing taps nothing silently where every finder verb would have refused.

Implementation

Future<void> tapAt(Offset at, {Shot? shot, Settle? settle}) => _step(
  shot,
  settle,
  () async {
    _aimAtPoint(at);
    await _approach('tapAt');
    await _pressAt(at);
  },
  verb: 'tapAt',
  target: '${at.dx.round()},${at.dy.round()}',
);