Sobes.tech
Junior

Jakie gesty można obsługiwać w Flutterze?

sobes.tech AI

Odpowiedź od AI

W Flutterze można obsługiwać następujące gesty za pomocą widżetów takich jak GestureDetector i innych:

  • Dotknięcia:

    • onTap: Proste dotknięcie.
    • onDoubleTap: Podwójne dotknięcie.
    • onLongPress: Długie naciśnięcie.
    • onTapDown: Dotknięcie w momencie kontaktu z ekranem.
    • onTapUp: Zwolnienie po dotknięciu.
    • onTapCancel: Anulowanie dotknięcia.
  • Przeciąganie (Draggable):

    • onVerticalDragStart: Rozpoczęcie przeciągania pionowego.
    • onVerticalDragUpdate: Aktualizacja przeciągania pionowego.
    • onVerticalDragEnd: Koniec przeciągania pionowego.
    • onHorizontalDragStart: Rozpoczęcie przeciągania poziomego.
    • onHorizontalDragUpdate: Aktualizacja przeciągania poziomego.
    • onHorizontalDragEnd: Koniec przeciągania poziomego.
    • onPanStart: Rozpoczęcie dowolnego przeciągania.
    • onPanUpdate: Aktualizacja dowolnego przeciągania.
    • onPanEnd: Koniec dowolnego przeciągania.
  • Powiększanie/zmniejszanie (Skala):

    • onScaleStart: Rozpoczęcie skalowania.
    • onScaleUpdate: Aktualizacja skalowania.
    • onScaleEnd: Koniec skalowania.
  • Inne gesty:

    • onForcePressStart: Rozpoczęcie silnego naciśnięcia (obsługiwane na niektórych urządzeniach).
    • onForcePressPeak: Szczyt silnego naciśnięcia.
    • onForcePressUpdate: Aktualizacja silnego naciśnięcia.
    • onForcePressEnd: Koniec silnego naciśnięcia.

Przykład użycia GestureDetector:

import 'package:flutter/material.dart';

class MyGestureWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        print('Dotknięto!');
      },
      onDoubleTap: () {
        print('Podwójne dotknięcie!');
      },
      onLongPress: () {
        print('Długie naciśnięcie!');
      },
      child: Container(
        color: Colors.blue,
        width: 100,
        height: 100,
        child: Center(
          child: Text('Dotknij mnie'),
        ),
      ),
    );
  }
}