Flutter从入门到进阶 实战携程网App

9.【文档讲解】手势检测及触摸事件处理

2019-04-10  本文已影响0人  全栈小土堆堆堆

3-18【文档讲解】手势检测及触摸事件处理

声明:Flutter专栏文档均来自慕课网
https://coding.imooc.com/class/321.html

手势检测及触摸事件处理

如何给 Flutter 的 widget 添加一个点击事件的监听?

Flutter中,有两种方法来添加点击监听者:

1.如果 widget 本身支持事件监测,直接传递给它一个函数,并在这个函数里实现响应方法。例如,RaisedButton widget 拥有一个 onPressed 参数:

@override
Widget build(BuildContext context) {
  return RaisedButton(
    onPressed: () {
      print("click");
    },
    child: Text("Button"),
  );
}

2.如果 widget 本身不支持事件监测,则在外面包裹一个 GestureDetector,并给它的 onTap 属性传递一个函数:

class SampleApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: GestureDetector(
          child: FlutterLogo(
            size: 200.0,
          ),
          onTap: () {
            print("tap");
          },
        ),
      ),
    );
  }
}

如何处理widget 上的其他手势?

使用GestureDetector,可以监听多种手势,例如

下面这个例子展示了一个GestureDetector是如何实现根据按下、松开、点击取消事件做相应处理的:

GestureDetector(
  onTapDown: (e) {
    _speakStart();
  },
  onTapUp: (e) {
    _speakStop();
  },
  onTapCancel: () {
    _speakStop();
  },
  child: Center(
    child: Column(
      children: <Widget>[
        Padding(
          padding: EdgeInsets.all(10),
          child: Text(
            speakTips,
            style: TextStyle(color: Colors.blue, fontSize: 12),
          ),
        ),
        Stack(
          children: <Widget>[
            Container(
              //占坑,避免动画执行过程中导致父布局大小变得
              height: MIC_SIZE,
              width: MIC_SIZE,
            ),
            Center(
              child: AnimatedMic(
                animation: animation,
              ),
            )
          ],
        )
      ],
    ),
  ))

关于GestureDetector的更多用法和实战技巧,可以学习《处理手势之GestureDetector开发指南》部分的课程。


上一篇 下一篇

猜你喜欢

热点阅读