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. Spring Boot 配置文件中的花样

    原文:https://www.cnblogs.com/didispace/p/11002732.html 在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring ...

  2. CentOS7怎样安装Nginx1.12.2

    通过nginx官网的源码安装 yum -y install gcc* openssl* pcre* zlib* 安装相关依赖 这一步很重要 不然会报乱七八糟的错误 cd /usr/local进入/us ...

  3. ClassLoader类加载器 & Java类加载机制 & 破坏双亲委托机制

    ClassLoader类加载器 Java 中的类加载器大致可以分成两类: 一类是系统提供的: 引导类加载器(Bootstrap classloader):它用来加载 Java 的核心库(如rt.jar ...

  4. Python语言程序设计(1)--实例1和基本知识点

    记录慕课大学课程<Python语言程序设计>的学习历程. 实例1:温度转换 #温度转换TempStr = input("请输入带有符号的温度值:") #TempStr是 ...

  5. SVM: 直观上理解大间距分类器

    在SVM中,增加安全的间距因子 那么增加了这个间距因子后,会出现什么样的结果呢,我们将C设置为很大(C=100000) SVM决策边界 当我们将C设置得很大进,要想SVM的cost function最 ...

  6. 八.Protobuf3更新消息类型(添加新的字段)

    Protobuf3 更新消息类型 如果现有的消息类型不满足你的所有需求——例如,你希望消息格式有一个额外的字段——但是你仍然希望使用用旧格式创建的代码,别担心!在不破坏任何现有代码的情况下更新消息类型 ...

  7. oracle数据库锁表

    在团队开发一个项目的时候,避免不了两个或两个以上的人同时操作某一数据库中的同一张表,这时候,如果一个用户没有提交事务,或者忘记提交事务,那么其他用户就不能对这张表进行操作了,这是很烦人的事情,下面是查 ...

  8. c# 异步方法中HttpContext.Current为空

    调用异步方法前 HttpContext context = System.Web.HttpContext.Current; HttpRuntime.Cache.Insert("context ...

  9. php自定义函数之参数的引用

    在变量这个函数中,我们学习了变量的引用,我们来回顾一下知识:大理石平台支架 <?php $a = 10; $b = &$a; $a = 100; echo $a.'---------'. ...

  10. js使用WebUploader做大文件的分块和断点续传

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...