Saltar al contenido principal

Limpieza de GestureRecognizer

Las subclases de OneSequenceGestureRecognizer deben sobrescribir `addAllowedPointer` para recibir un `PointerDownEvent`

Resumen

#

Se cambió OneSequenceGestureRecognizer.addAllowedPointer() para recibir un PointerDownEvent, al igual que su superclase. Anteriormente, aceptaba el tipo más general PointerEvent, lo cual era incorrecto.

Contexto

#

El framework únicamente pasa objetos PointerDownEvent a addAllowedPointer(). Declarar que OneSequenceGestureRecognizer.addAllowedPointer() recibe el tipo más general era confuso, y obligaba a las subclases de OneSequenceGestureRecognizer a realizar un cast de su argumento a la clase correcta.

Descripción del cambio

#

La declaración anterior obligaba a los descendientes de OneSequenceGestureRecognizer a sobrescribir addAllowedPointer() de la siguiente manera:

dart
class CustomGestureRecognizer extends ScaleGestureRecognizer {
  @override
  void addAllowedPointer(PointerEvent event) {
    // insert custom handling of event here...
    super.addAllowedPointer(event);
  }
}

La nueva declaración del método hará que este código falle con el siguiente mensaje de error:

super.addAllowedPointer(event); The argument type 'PointerEvent' can't be assigned to the parameter type 'PointerDownEvent'.
                                #argument_type_not_assignable

Guía de migración

#

Código antes de la migración:

dart
class CustomGestureRecognizer extends ScaleGestureRecognizer {
  @override
  void addAllowedPointer(PointerEvent event) {
    // insert custom handling of event here...
    super.addAllowedPointer(event);
  }
}

Código después de la migración:

dart
class CustomGestureRecognizer extends ScaleGestureRecognizer {
  @override
  void addAllowedPointer(PointerDownEvent event) {
    // insert custom handling of event here...
    super.addAllowedPointer(event);
  }
}

Timeline

#

Introducido en la versión: 2.3.0-13.0.pre
En el lanzamiento estable: 2.5

Referencias

#

Documentación de la API:

PR relevante: