longPress method

Future<void> longPress(
  1. Finder finder, {
  2. SettlePolicy? settlePolicy,
  3. Duration? visibleTimeout,
  4. Duration? settleTimeout,
  5. Alignment alignment = Alignment.center,
  6. bool enablePatrolLog = true,
})
inherited

Waits until this finder finds at least 1 visible widget and then makes long press gesture on it.

Example:

// long presses on the first widget having Key('createAccount')
await $(#createAccount).longPress();

If the finder finds more than 1 widget, you can choose which one to make long press on:

// long presses on the third TextButton widget
await $(TextButton).at(2).longPress();

After long press gesture this method automatically calls WidgetTester.pumpAndSettle. If you want to disable this behavior, set settlePolicy to SettlePolicy.noSettle.

See also:

Implementation

Future<void> longPress(
  Finder finder, {
  SettlePolicy? settlePolicy,
  Duration? visibleTimeout,
  Duration? settleTimeout,
  Alignment alignment = Alignment.center,
  bool enablePatrolLog = true,
}) {
  return TestAsyncUtils.guard(
    () => wrapWithPatrolLog(
      action: 'longPress',
      finder: finder,
      color: AnsiCodes.yellow,
      enablePatrolLog: enablePatrolLog,
      function: () async {
        final resolvedFinder = await waitUntilVisible(
          finder,
          timeout: visibleTimeout,
          alignment: alignment,
          enablePatrolLog: false,
        );
        final rect = tester.getRect(resolvedFinder.first);
        await tester.longPressAt(alignment.withinRect(rect));
        await _performPump(
          settlePolicy: settlePolicy,
          settleTimeout: settleTimeout,
        );
      },
    ),
  );
}