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(
width: 1.0,
color: Colors.blue,
),
borderRadius: new BorderRadius.all(new Radius.circular(10.0)),
),
// foregroundDecoration: new BoxDecoration(
// border: new Border.all(
// width: 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(),
);
}
}

flutter手势的更多相关文章

  1. Flutter交互实战-即刻App探索页下拉&拖拽效果

    前言 Flutter最近比较热门,但是Flutter成体系的文章并不多,前期避免不了踩坑:我这篇文章主要介绍如何使用Flutter实现一个比较复杂的手势交互,顺便分享一下我在使用Flutter过程中遇 ...

  2. 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题

    导语 发布app后,开发者最头疼的问题就是如何解决交付后的用户侧问题的还原和定位,是业界缺乏一整套系统的解决方案的空白领域,闲鱼技术团队结合自己业务痛点在flutter上提出一套全新的技术思路解决这个 ...

  3. Flutter资源

    目录 文章 一开始 HOWTO文档 网站/博客 高级 视频 组件 演示 UI 材料设计 图片 地图 图表 导航 验证 文字和富文本 分析.流量统计 自动构建 风格样式 媒体 音频 视频 语音 存储 获 ...

  4. 从零学习Fluter(五):Flutter中手势滑动拖动已经网络请求

    从六号开始搞Flutter,到今天写这篇blog已经过了4天时间,文档初步浏览了一遍,写下了这个demo.demo源码分享在github上,现在对flutter有种说不出的喜欢了.大家一起搞吧! 废话 ...

  5. Flutter进阶—点击、拖动和其他手势

    Flutter中的手势系统有两个层次.第一层具有原始指针事件,其描述了穿过屏幕的指针(例如触摸.鼠标和触控笔)的位置和移动.第二层具有手势,其描述由一个或多个指针移动组成的语义动作. 指针指针代表用户 ...

  6. flutter系列之:移动端的手势基础GestureDetector

    目录 简介 Pointers和Listener GestureDetector 手势冲突 总结 简介 移动的和PC端有什么不同呢?同样的H5可以运行在APP端,也可以运行在PC端.两者最大的区别就是移 ...

  7. 【译】使用 Flutter 实现跨平台移动端开发

    作者: Mike Bluestein   | 原文地址:[https://www.smashingmagazine.com/2018/06/google-flutter-mobile-developm ...

  8. 在Flutter中嵌入Native组件的正确姿势是...

    引言 在漫长的从Native向Flutter过渡的混合工程时期,要想平滑地过渡,在Flutter中使用Native中较为完善的控件会是一个很好的选择.本文希望向大家介绍AndroidView的使用方式 ...

  9. Android程序员的Flutter学习笔记

    作为忠实与较资深的Android汪, 最近抽出了一些时间研究了一下Google的亲儿子Flutter, 尚属皮毛, 只能算是个简单的记录吧. Google自2017年第一次提出Flutter, 到20 ...

随机推荐

  1. linux的vim基本使用

    转自:https://www.cnblogs.com/qq631243523/p/10191714.html 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在 ...

  2. 0024SpringMVC中几个常见注解的实验

    对SpringMVC中的以下几个常用注解进行简单的实验测试: 1.@RequestParam 2.@PathVariable 3.@RequestBody 4.@RequestHeader 5.@Co ...

  3. [JSOI2015]最大公约数

    题意:给一个序列a[1],a[2],a[3]...a[n],求其中连续的子序列A[L],A[L+1],...,A[R],使其权值 W(L,R)=(R-L+1)×gcd(A[L],...,A[R])最大 ...

  4. Java邮件开发(三):解决附件名为乱码及显示友好名称

    1.附件的名称只能为英文,中文乱码 2.友好名称的显示. 我们使用163等邮箱发送邮件时,我们经常可以看到收件人一栏中会是:张益达 <zyh5540@163.com>这种方式.在上一版本的 ...

  5. CSS3中的display:grid网格布局介绍

    1.网格布局(grid): 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局; 2.基本概念: 容器和项目,如图所示: <div class="content&qu ...

  6. 华东交通大学 2019 I 不要666 数位dp进阶

    Problem Description 题库链接 666是一个网络用语,用来形容某人或某物很厉害很牛.而在西方,666指魔鬼,撒旦和灵魂,是不吉利的象征.所以邓志聪并不喜欢任何与6有关的数字.什么数字 ...

  7. UVA 11468 Substring (记忆化搜索 + AC自动鸡)

    传送门 题意: 给你K个模式串, 然后,再给你 n 个字符, 和它们出现的概率 p[ i ], 模式串肯定由给定的字符组成. 且所有字符,要么是数字,要么是大小写字母. 问你生成一个长度为L的串,不包 ...

  8. noi.ac #39 MST

    MST 模板题 #include <iostream> #include <cstdio> #include <algorithm> #include <cm ...

  9. 留言板welcome here friends!

    欢迎留言!!! 另附本人信息栏 \(cnblogs\): ShineEternal \(洛谷\):vercont \(CSDN\) \(blog\): ShineEternal \(github\) ...

  10. python模块之psutil

    一.模块安装 1.简介 psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息. ...