zoukankan      html  css  js  c++  java
  • flutter -忽略点击事件

    absorbPointer开启absorbing:本身可以接收点击事件,但不会把事件传递给子组件。

    ignorePointer开启ignoring:本身和子组件都不能接收点击事件。

    import 'package:flutter/material.dart';
    import 'package:flutter/cupertino.dart';
    
    
    void main() => runApp(MaterialApp(
      title: '啦啦啦啦',
      theme: ThemeData(primarySwatch: Colors.red, primaryColor: Colors.green),
      home: PointerIgnorePage(),)
    );
    
    class PointerIgnorePage extends StatefulWidget {
    
    
      @override
      State<StatefulWidget> createState() => PointerIgnorePageState();
    }
    
    class PointerIgnorePageState extends State<PointerIgnorePage> {
    
      bool _ifIgnore = false;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text('测试忽略点击事件'),),
          body:
              Container(
                alignment: Alignment.center,
                child:
                  Column(
                    children: <Widget>[
                      Switch(
                        value: _ifIgnore,
                        onChanged: (value) => setState((){_ifIgnore = value;}),
                      ),
                      GestureDetector(
                        onTap: () => print('外层tap1'),
                        child: IgnorePointer(
                          ignoring: _ifIgnore,
                          child: FlatButton(child: Text('点我'), onPressed: () => print('点击了button1'),),
                        ),
                      ),
                      GestureDetector(
                        onTap: () => print('外层tap2'),
                        child: AbsorbPointer(
                          absorbing: _ifIgnore,
                          child: FlatButton(child: Text('点我'), onPressed: () => print('点击了button2'),),
                        ),
                      ),
                    ],
                  ),
              ),
        );
      }
    }

    关闭_ifIgnore,二者本身都能接收点击事件,child优先接收点击事件,所以分别输出button1/button2。

     开启_ifIgnore,只有absorbPointer才能接收点击事件,但其内部button无法接收点击事件,所以能输出tap2。而ignorePointer则完全无法接收点击事件,所以tap1无法输出。

  • 相关阅读:
    【转】 Android代码混淆之混淆规则
    【转】java虚拟机机制总结
    【转】图解 HTTP协议/IIS 原理及ASP.NET运行机制浅析
    【转】Android 消息机制
    Android-eclipse-NDK&JNI
    【转】大型网站系统架构的演化
    【转】Android开发必知--WebView加载html5实现炫酷引导页面
    【转】Java虚拟机详解----GC算法和种类
    网页中缩略图的意义
    网页开关灯效果
  • 原文地址:https://www.cnblogs.com/FdWzy/p/13501429.html
Copyright © 2011-2022 走看看