Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.1.1

gesture_x_detector

um detector de gestos leve que suporta vários tipos (Toque, Toque duplo, Escala, Pressão longa, Movimento) e todos os callbacks podem ser usados simultaneamente

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
15,3 mil
Curtidas
63
Pontos Pub
150

Instalar pacote

flutter pub add gesture_x_detector

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

GestureXDetector é um pacote leve do Flutter que permite a detecção de múltiplos gestos simultaneamente, incluindo Toque, Duplo Toque, Escala, Pressionar por Tempo e Mover. Ele oferece suporte flexível a callbacks para cada tipo de gesto, permitindo que desenvolvedores respondam a interações complexas do usuário de forma unificada. Projetado para uso em múltiplas plataformas, funciona sem problemas em Android, iOS, Web, macOS, Windows e Linux. O pacote é ideal para interfaces interativas que exigem feedback tátil responsivo sem adicionar complexidade.

Casos de uso

  • Aplicativos interativos de desenho
  • Visualizadores de imagem com zoom
  • Interfaces de arrastar e soltar
  • Reconhecimento de gestos multi-toque
  • Controles personalizados baseados em gestos

Principais recursos

  • Suporta múltiplos gestos simultaneamente
  • Todos os callbacks estão disponíveis simultaneamente
  • Leve e eficiente
  • Compatibilidade multiplataforma
  • Integração simples da API
  • Detecção de gestos em tempo real

Indicado para

  • Desenvolvedores de interfaces de usuário interativas
  • Aplicativos que exigem entrada de multi-toque
  • Projetos que precisam de manipulação de gestos responsiva
  • Aplicações de toque multiplataforma
  • Prototipagem de recursos com foco em gestos

Considerações

  • Pode exigir gerenciamento cuidadoso do estado com gestos sobrepostos
  • Impacto no desempenho em eventos de gestos de alta frequência
  • Não otimizado para cadeias de gestos extremamente complexas
  • Composição limitada de gestos embutidos
  • Mais adequado para lógica de gestos moderada a alta

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

gesture_x_detector

A widget that detects gestures.

Easy to use, lightweight gesture detector for Flutter apps.

Features

  • Detect tap gestures [Tap, DoubleTap, Scale(start, update, end), Long press, Move(start, update, end) and Scroll]
  • All callbacks can be used simultaneously
  • Customize: ignore tap event on double tap, change duration time to detect double tap or long-press

Getting Started

Installation

Add to pubspec.yaml:

dependencies:
    gesture_x_detector:
Example

Checkout the example at https://github.com/taodo2291/xgesture_flutter/tree/master/example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:gesture_x_detector/gesture_x_detector.dart';

void main() {
  runApp(
    MaterialApp(
      home: XGestureExample(),
    ),
  );
}

class XGestureExample extends StatefulWidget {
  @override
  _XGestureExampleState createState() => _XGestureExampleState();
}

class _XGestureExampleState extends State<XGestureExample> {
  String lastEventName = 'Tap on screen';

  @override
  Widget build(BuildContext context) {
    return XGestureDetector(
      child: Material(
        child: Center(
          child: Text(
            lastEventName,
            style: TextStyle(fontSize: 30),
          ),
        ),
      ),
      doubleTapTimeConsider: 300,
      longPressTimeConsider: 350,
      onTap: onTap,
      onDoubleTap: onDoubleTap,
      onLongPress: onLongPress,
      onLongPressEnd: onLongPressEnd,
      onMoveStart: onMoveStart,
      onMoveEnd: onMoveEnd,
      onMoveUpdate: onMoveUpdate,
      onScaleStart: onScaleStart,
      onScaleUpdate: onScaleUpdate,
      onScaleEnd: onScaleEnd,
      bypassTapEventOnDoubleTap: false,
      onLongPressMove: onLongPressMove,
      onScrollEvent: onScrollEvent,
      longPressMaximumRangeAllowed: 25,
    );
  }

  void onScrollEvent(ScrollEvent event) {
    setLastEventName('onLongPressMove');
    print('scrolling - pos: ${event.localPos} delta: ${event.scrollDelta}');
  }

  void onLongPressMove(MoveEvent event) {
    setLastEventName('onLongPressMove');
    print('onMoveUpdate - pos: ${event.localPos} delta: ${event.delta}');
  }

  void onLongPressEnd() {
    setLastEventName('onLongPressEnd');
    print('onLongPressEnd');
  }

  void onScaleEnd() {
    setLastEventName('onScaleEnd');
    print('onScaleEnd');
  }

  void onScaleUpdate(ScaleEvent event) {
    setLastEventName('onScaleUpdate');
    print(
        'onScaleUpdate - changedFocusPoint:  ${event.focalPoint} ; scale: ${event.scale} ;Rotation: ${event.rotationAngle}');
  }

  void onScaleStart(initialFocusPoint) {
    setLastEventName('onScaleStart');
    print('onScaleStart - initialFocusPoint: $initialFocusPoint');
  }

  void onMoveUpdate(MoveEvent event) {
    setLastEventName('onMoveUpdate');
    print('onMoveUpdate - pos: ${event.localPos} delta: ${event.delta}');
  }

  void onMoveEnd(localPos) {
    setLastEventName('onMoveEnd');
    print('onMoveEnd - pos: $localPos');
  }

  void onMoveStart(localPos) {
    setLastEventName('onMoveStart');
    print('onMoveStart - pos: $localPos');
  }

  void onLongPress(TapEvent event) {
    setLastEventName('onLongPress');
    print('onLongPress - pos: ${event.localPos}');
  }

  void onDoubleTap(event) {
    setLastEventName('onDoubleTap');
    print('onDoubleTap - pos: ' + event.localPos.toString());
  }

  void onTap(event) {
    setLastEventName('onTap');
    print('onTap - pos: ' + event.localPos.toString());
  }

  void setLastEventName(String eventName) {
    setState(() {
      lastEventName = eventName;
    });
  }
}

Customize
  • Change DoubleTap and Long press detect
@override
  Widget build(BuildContext context) {
    return XGestureDetector(
      child: child,
      doubleTapTimeConsider: 300,       //customize double tap time
      longPressTimeConsider: 400,       //customize long press time
      longPressMaximumRangeAllowed: 25, //customize the long press behavior, the touch can be move a some pixels (25 is the distanceSquare, that mean we allow move 5 pixels)
    );
  }
  • Ignore Tap in case Double Tap dectected
@override
  Widget build(BuildContext context) {
    return XGestureDetector(
      child: child,
      bypassTapEventOnDoubleTap: true,      // default is false
    );
  }
  • Allow move event after long press event fired without release pointer
@override
  Widget build(BuildContext context) {
    return XGestureDetector(
      child: child,
      bypassMoveEventAfterLongPress: false,      // default is true
    );
  }

Checkout the Canvas playground example at https://github.com/taodo2291/xgesture_flutter/tree/master/example/lib/canvas_playground.dart

Author

Viet Nguyen - taodo2291@gmail.com

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote