execute method

  1. @override
Future<bool> execute(
  1. Tester tester
)
override

Called when it executes the action in a flow file.

Implementation

@override
Future<bool> execute(Tester tester) async {
  final node = await tester.find(within);
  if (node == null) {
    return false;
  }

  final Offset scrollDelta;
  switch (direction) {
    case AxisDirection.up:
      scrollDelta = Offset(0, -speed);
      break;
    case AxisDirection.right:
      scrollDelta = Offset(speed, 0);
      break;
    case AxisDirection.down:
      scrollDelta = Offset(0, speed);
      break;
    case AxisDirection.left:
      scrollDelta = Offset(-speed, 0);
      break;
  }

  final end = clock.now().add(timeout);
  while ((await tester.find(until, timeout: Duration.zero)) == null) {
    tester.emitPointerEvent(
      PointerScrollEvent(
        position: node.center,
        scrollDelta: scrollDelta,
      ),
    );
    await tester.pump();
    if (clock.now().isAfter(end)) {
      return false;
    }
  }

  return true;
}