blob: e0d77c2434fd4fade1d053de5cee35923cccc32c [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'arena.dart';
import 'constants.dart';
import 'events.dart';
import 'recognizer.dart';
/// Signature for when a pointer has remained in contact with the screen at the
/// same location for a long period of time.
typedef void GestureLongPressCallback();
/// Recognizes when the user has pressed down at the same location for a long
/// period of time.
class LongPressGestureRecognizer extends PrimaryPointerGestureRecognizer {
/// Creates a long-press gesture recognizer.
///
/// Consider assigning the [onLongPress] callback after creating this object.
LongPressGestureRecognizer({ Object debugOwner }) : super(deadline: kLongPressTimeout, debugOwner: debugOwner);
/// Called when a long-press is recognized.
GestureLongPressCallback onLongPress;
@override
void didExceedDeadline() {
resolve(GestureDisposition.accepted);
if (onLongPress != null)
invokeCallback<Null>('onLongPress', onLongPress); // ignore: STRONG_MODE_INVALID_CAST_FUNCTION_EXPR, https://github.com/dart-lang/sdk/issues/27504
}
@override
void handlePrimaryPointer(PointerEvent event) {
if (event is PointerUpEvent)
resolve(GestureDisposition.rejected);
}
@override
String get debugDescription => 'long press';
}