Назад к вопросам
Junior
408
questionbank

Какие жесты можно обрабатывать в Flutter?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Flutter можно обрабатывать следующие жесты с помощью виджетов GestureDetector и других:

  • Нажатия:

    • onTap: Простое нажатие.
    • onDoubleTap: Двойное нажатие.
    • onLongPress: Долгое нажатие.
    • onTapDown: Нажатие в момент касания экрана.
    • onTapUp: Отпускание после нажатия.
    • onTapCancel: Отмена нажатия.
  • Перетаскивание (Draggable):

    • onVerticalDragStart: Начало вертикального перетаскивания.
    • onVerticalDragUpdate: Обновление вертикального перетаскивания.
    • onVerticalDragEnd: Конец вертикального перетаскивания.
    • onHorizontalDragStart: Начало горизонтального перетаскивания.
    • onHorizontalDragUpdate: Обновление горизонтального перетаскивания.
    • onHorizontalDragEnd: Конец горизонтального перетаскивания.
    • onPanStart: Начало любого перетаскивания.
    • onPanUpdate: Обновление любого перетаскивания.
    • onPanEnd: Конец любого перетаскивания.
  • Увеличение/уменьшение (Scale):

    • onScaleStart: Начало масштабирования.
    • onScaleUpdate: Обновление масштабирования.
    • onScaleEnd: Конец масштабирования.
  • Другие жесты:

    • onForcePressStart: Начало сильного нажатия (поддерживается на некоторых устройствах).
    • onForcePressPeak: Пик сильного нажатия.
    • onForcePressUpdate: Обновление сильного нажатия.
    • onForcePressEnd: Конец сильного нажатия.

Пример использования GestureDetector:

import 'package:flutter/material.dart';

class MyGestureWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        print('Тап!');
      },
      onDoubleTap: () {
        print('Двойной тап!');
      },
      onLongPress: () {
        print('Долгое нажатие!');
      },
      child: Container(
        color: Colors.blue,
        width: 100,
        height: 100,
        child: Center(
          child: Text('Нажми меня'),
        ),
      ),
    );
  }
}