Gestures

No Flutter, gestos são interações do usuário com a tela, como toques, deslizes, e gestos de pinch e zoom. Para lidar com gestos em seu aplicativo, você pode usar widgets de gesto e reconhecedores de gesto. Aqui estão alguns dos principais conceitos e widgets relacionados a gestos no Flutter:

1. GestureDetector:

O GestureDetector é um widget que reconhece vários gestos do usuário e pode conter outros widgets. Ele fornece callbacks para diferentes tipos de gestos, como onTap, onDoubleTap, onLongPress, onVerticalDragUpdate, onScale, etc.

Exemplo de um GestureDetector com um gesto onTap:

GestureDetector(
  onTap: () {
    print('Você tocou no widget!');
  },
  child: Container(
    color: Colors.blue,
    width: 200,
    height: 200,
    child: Center(
      child: Text('Toque aqui'),
    ),
  ),
)

2. InkWell:

O InkWell é um widget de material design que reage visualmente ao toque do usuário. Ele também é usado para gestos simples como onTap.

InkWell(
  onTap: () {
    print('Você tocou no InkWell!');
  },
  child: Container(
    width: 200,
    height: 50,
    child: Center(
      child: Text('Toque aqui'),
    ),
  ),
)

3. Gesture Recognizers:

Os “reconhecedores de gestos” são objetos que interpretam os gestos do usuário em um widget. Flutter fornece vários reconhecedores de gestos, como onTap, onDoubleTap, onLongPress, onPanUpdate, onScaleUpdate, etc.

Exemplo de um reconhecedor de gesto onTap:

GestureDetector(
  onTap: () {
    print('Você tocou no widget!');
  },
  child: // Seu conteúdo aqui
)

4. Dismissible:

O Dismissible é um widget que permite que você deslize um item da tela para removê-lo ou realizar uma ação.

Dismissible(
  key: UniqueKey(),
  onDismissed: (direction) {
    // Ação a ser realizada quando o item é removido
  },
  child: // Seu conteúdo aqui
)

5. GestureDetector para Gestos Complexos:

Para gestos mais complexos, você pode usar GestureDetector em conjunto com onPanUpdate, onScaleUpdate e outros callbacks para detectar gestos como deslizes em várias direções, rotações e pinch-to-zoom.

GestureDetector(
  onPanUpdate: (details) {
    // Detectar movimento do dedo na tela
  },
  onScaleUpdate: (details) {
    // Detectar movimento de pinch (zoom)
  },
  child: // Seu conteúdo aqui
)

Lembre-se de que, ao lidar com gestos, é importante considerar a experiência do usuário e garantir que os gestos se comportem de maneira intuitiva e responsiva. Ao combinar diferentes reconhecedores de gestos e callbacks, você pode criar interfaces do usuário interativas e envolventes em seu aplicativo Flutter.