Flutter GestureDetector Widget使用详解

Flutter中的GestureDetector Widget是一个用于识别各种手势操作的Widget。GestureDetector可以识别的手势操作包括:tap(轻触)、double tap(双击)、long press(长按)、vertical drag(垂直拖拽)、horizontal drag(水平拖拽)、pan(滑动)、scale(缩放)和rotate(旋转)。

GestureDetector Widget有以下属性:

  • onTap: 当用户轻触屏幕时要执行的回调函数。
  • onDoubleTap: 当用户双击屏幕时要执行的回调函数。
  • onLongPress: 当用户长按屏幕时要执行的回调函数。
  • onVerticalDragDown: 当用户开始垂直拖拽时要执行的回调函数。
  • onVerticalDragEnd: 当用户结束垂直拖拽时要执行的回调函数。
  • onHorizontalDragDown: 当用户开始水平拖拽时要执行的回调函数。
  • onHorizontalDragEnd: 当用户结束水平拖拽时要执行的回调函数。
  • onPanDown: 当用户开始滑动时要执行的回调函数。
  • onPanUpdate: 当用户滑动时要执行的回调函数。
  • onPanEnd: 当用户停止滑动时要执行的回调函数。
  • onScaleStart: 当用户开始缩放时要执行的回调函数。
  • onScaleUpdate: 当用户缩放时要执行的回调函数。
  • onScaleEnd: 当用户停止缩放时要执行的回调函数。
  • onRotateStart: 当用户开始旋转时要执行的回调函数。
  • onRotateUpdate: 当用户旋转时要执行的回调函数。
  • onRotateEnd: 当用户停止旋转时要执行的回调函数。

下面是一个使用GestureDetector Widget的例子,该例子显示了一个简单的可点击的按钮。当用户点击按钮时,屏幕上会显示一个SnackBar。

import 'package:flutter/material.dart';

class GestureDetectorDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Gesture Detector Demo'),
      ),
      body: Center(
        child: GestureDetector(
          onTap: () {
            final snackBar = SnackBar(content: Text('Button Clicked'));
            ScaffoldMessenger.of(context).showSnackBar(snackBar);
          },
          child: Container(
            width: 200,
            height: 50,
            decoration: BoxDecoration(
              color: Colors.blue,
              borderRadius: BorderRadius.circular(8),
            ),
            child: Center(
              child: Text(
                'Click Me',
                style: TextStyle(
                  fontSize: 24,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

在上面的例子中,我们将GestureDetector Widget包装在Container Widget中。当用户点击Container Widget时,GestureDetector Widget会触发onTap回调函数。在这种情况下,onTap回调函数会显示一个SnackBar,指示用户已经点击了按钮。

可以通过GestureDetector Widget的不同回调函数来实现各种手势,例如onDoubleTap、onLongPress等。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""