zoukankan      html  css  js  c++  java
  • flutter手势

    import 'package:flutter/material.dart';
    import 'package:flutter_app/pages/dismissed_page.dart';
    
    class GestureAppPage extends StatefulWidget {
      @override
      State<StatefulWidget> createState() {
        // TODO: implement createState
        return new _GestureAppPageState();
      }
    }
    
    class _GestureAppPageState extends State<GestureAppPage> {
    
      var tapEvent = '';
    
    //  _showSnakeBar(String str) {
    //    final snackBar = new SnackBar(content: new Text(str));
    //    Scaffold.of(context).showSnackBar(snackBar);
    //  }
    
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return new Scaffold(
          appBar: new AppBar(
            title: new Text('Gesture 学习'),
            centerTitle: true,
          ),
          body: new ListView(
            children: <Widget>[
              new Padding(
                padding: const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                child: new RaisedButton(
                    textColor: Colors.black,
                    child: new Text('RaisedButton 点击'),
                    onPressed: () {
                      final snackBar = new SnackBar(content: new Text("这是一个 RaisedButton 点击事件,onPressed处理"));
                      Scaffold.of(context).showSnackBar(snackBar);
    //                  _showSnakeBar("这是一个 RaisedButton 点击事件,onPressed处理");
                    }),
              ),
              new Padding(
                padding: const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                child: new GestureDetector(
                  onTap: () {
                    final snackBar = new SnackBar(content: new Text("这是一个GestureDetector监听的onTap事件"));
                    Scaffold.of(context).showSnackBar(snackBar);
    //                _showSnakeBar("这是一个GestureDetector监听的onTap事件");
                  },
                  child: new BorderButton('GestureDetector onTap 按钮'),
                ),
              ),
              new Padding(
                padding: const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                child:
                    new Text(tapEvent, style: Theme.of(context).textTheme.display1),
              ),
              new Padding(
                padding: const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                child: new GestureDetector(
                  onTapDown: (tapDown) {
                    setState(() {
                      tapEvent = '这是GestureDetector监听的onTapDown事件';
                    });
                  },
                  onTapUp: (tapUp) {
                    setState(() {
                      tapEvent = '这是GestureDetector监听的onTapUp事件';
                    });
                  },
                  onTapCancel: () {
                    setState(() {
                      tapEvent = '这是GestureDetector监听的onTapCancel事件';
                    });
                  },
                  onDoubleTap: () {
                    setState(() {
                      tapEvent = '这是GestureDetector监听的onDoubleTap事件';
                    });
                  },
                  onLongPress: () {
                    setState(() {
                      tapEvent = '这是GestureDetector监听的onLongPress事件';
                    });
                  },
                  child: new BorderButton('GestureDetector onTap 分解事件按钮'),
                ),
              ),
              new Padding(
                padding: const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                child: new Text('上面的按钮通过GestureDetector监听事件后,涟漪效果消失了,使用下面的方案解决'),
              ),
              new Padding(
                  padding:
                      const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                  child: new InkWell(
                    borderRadius: new BorderRadius.all(new Radius.circular(10.0)),
                    onTap: () {
                      final snackBar = new SnackBar(content: new Text("这是一个InkWell监听的onTap事件"));
                      Scaffold.of(context).showSnackBar(snackBar);
    //                  _showSnakeBar("这是一个InkWell监听的onTap事件");
                    },
                    child: new BorderButton('InkWell 按钮'),
                  )),
              new Padding(
                  padding:
                      const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0),
                  child: new InkWell(
                    borderRadius: new BorderRadius.all(new Radius.circular(10.0)),
                    onTap: () {
                      Navigator.of(context).push(new MaterialPageRoute(builder: (context)=> new  DismissedPage()));
                      },
    
                    child: new BorderButton('Dismissed 手势'),
                  )),
            ],
          ),
        );
      }
    }
    
    class BorderButton extends StatelessWidget {
      final String text;
    
      BorderButton(this.text);
    
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return new Container(
          alignment: Alignment.center,
          padding: const EdgeInsets.only(
              left: 10.0, top: 10.0, right: 10.0, bottom: 10.0),
          height: 48.0,
          decoration: new BoxDecoration(
            border: new Border.all(
               1.0,
              color: Colors.blue,
            ),
            borderRadius: new BorderRadius.all(new Radius.circular(10.0)),
          ),
    //      foregroundDecoration: new BoxDecoration(
    //        border: new Border.all(
    //           1.0,
    //          color: Colors.red,
    //        ),
    //        borderRadius: new BorderRadius.all(new Radius.circular(10.0)),
    //      ),
          child: new Text(text),
        );
      }
    }
    
    class GesturePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return new Scaffold(
          body: new GestureAppPage(),
        );
      }
    }
  • 相关阅读:
    JavaScript--函数、匿名函数和自执行函数详解
    HTML标签-----article、aside、figure、nav和section
    CSS文本(Text)属性-----letter-spacing和text-align
    CSS选择符-----伪类选择符
    JavaScript--元素对象方法setAttribute() 和appendChild()
    JavaScript--Document对象方法createElement()和createTextNode()
    Apache2.4使用require指令进行访问控制--允许或限制IP访问/通过User-Agent禁止不友好网络爬虫
    Null value was assigned to a property of primitive type setter of"原因及解决方法
    SQL SERVER中获取表间主外键关系
    解决Jboss中log4j在应用里面无法使用的问题
  • 原文地址:https://www.cnblogs.com/loaderman/p/11352384.html
Copyright © 2011-2022 走看看