Lorsque votre jeu a besoin de réagir des gestes comme le Drag, Zoom, etc sur plusieurs plateformes, vous pouvez avoir besoin d’ajouter le mixin MultiTouchDragDetector à votre Component FlameGame.

L’inconvénient est que le DragCallback sur d’autres Components ne fonctionnera plus car les événements sont interceptés par le MultiTouchDragDetector.

Bien que cela puisse être résolu dans un prochain PR, il y a un moyen de transmettre manuellement les événements en ajoutant une ligne de code :

class MyGame extends FlameGame with MultiTouchDragDetector {

  @override
  void onDragStart(int pointerId, DragStartInfo info) {
    // ignore: invalid_use_of_internal_member
    findByKey<MultiDragDispatcher>(const MultiDragDispatcherKey())?.handleDragStart(pointerId, info.raw);
  }

  @override
  void onDragUpdate(int pointerId, DragUpdateInfo info) {
    // ignore: invalid_use_of_internal_member
    findByKey<MultiDragDispatcher>(const MultiDragDispatcherKey())?.handleDragUpdate(pointerId, info.raw);
  }

  @override
  void onDragEnd(int pointerId, DragEndInfo info) {
    // ignore: invalid_use_of_internal_member
    findByKey<MultiDragDispatcher>(const MultiDragDispatcherKey())?.handleDragEnd(pointerId, info.raw);
  }

  @override
  void onDragCancel(int pointerId) {
    // ignore: invalid_use_of_internal_member
    findByKey<MultiDragDispatcher>(const MultiDragDispatcherKey())?.handleDragCancel(pointerId);
  }
}

 

Comme la fonction utilisée est interne à la bibliothèque, vous devez ajouter un lint ignore.
Vous pouvez également exécuter du code supplémentaire à l’intérieur de ces DragEvents.