| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> flutter 上拉抽屉(实现一下简单逻辑 没有深入) -> 正文阅读 |
|
[移动开发]flutter 上拉抽屉(实现一下简单逻辑 没有深入) |
import 'dart:async'; import 'package:flutter/material.dart'; class SlideUp extends StatefulWidget { ? const SlideUp({Key? key}) : super(key: key); ? @override ? State<SlideUp> createState() => _SlideUpState(); } class _SlideUpState extends State<SlideUp> { ? //手指移动的位置 ? double _lastMoveY = 0.0; ? //手指按下的位置 ? double _downY = 0.0; ? double height = 0.0; ? //盒子的高度 ? double boxHeight = 200; ? @override ? Widget build(BuildContext context) { ? ? var maxPostion = MediaQuery.of(context).size.height; ? ? print(maxPostion); ? ? return Scaffold( ? ? ? appBar: AppBar( ? ? ? ? title: Text("手势上滑"), ? ? ? ), ? ? ? body: Container( ? ? ? ? ? child: Stack( ? ? ? ? children: [ ? ? ? ? ? Positioned( ? ? ? ? ? ? ? bottom: 0, ? ? ? ? ? ? ? left: 0, ? ? ? ? ? ? ? right: 0, ? ? ? ? ? ? ? child: Container( ? ? ? ? ? ? ? ? padding: EdgeInsets.all(20), ? ? ? ? ? ? ? ? height: boxHeight, ? ? ? ? ? ? ? ? // width: 400, ? ? ? ? ? ? ? ? color: Colors.pink, ? ? ? ? ? ? ? ? child: GestureDetector( ? ? ? ? ? ? ? ? ? ? onVerticalDragStart: (v) { ? ? ? ? ? ? ? ? ? ? ? position = v.localPosition.dy; ? ? ? ? ? ? ? ? ? ? ? print("开始垂直滑动"); ? ? ? ? ? ? ? ? ? ? ? print(v.localPosition); ? ? ? ? ? ? ? ? ? ? ? print(v); ? ? ? ? ? ? ? ? ? ? ? _downY = v.localPosition.dy; ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? onVerticalDragEnd: (v) { ? ? ? ? ? ? ? ? ? ? ? if (_downY - _lastMoveY > 0) { ? ? ? ? ? ? ? ? ? ? ? ? print("上滑"); ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? print("下滑"); ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? if (boxHeight >= 200 && boxHeight < maxPostion / 2) { ? ? ? ? ? ? ? ? ? ? ? ? // print("在最下面"); ? ? ? ? ? ? ? ? ? ? ? ? //在最下面 ? ? ? ? ? ? ? ? ? ? ? ? if (_lastMoveY > 0) { ? ? ? ? ? ? ? ? ? ? ? ? ? // print("下滑"); ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? if (height > maxPostion / 3) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? // print("上滑很大"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight = maxPostion - 200; ? ? ? ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? // print("上滑小"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight = maxPostion / 2; ? ? ? ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? //在中间 ? ? ? ? ? ? ? ? ? ? ? else if (maxPostion / 2 + 100 > boxHeight && ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight >= maxPostion / 2) { ? ? ? ? ? ? ? ? ? ? ? ? // print("在最中间"); ? ? ? ? ? ? ? ? ? ? ? ? //在最下面 ? ? ? ? ? ? ? ? ? ? ? ? if (height > 0) { ? ? ? ? ? ? ? ? ? ? ? ? ? // print("上滑"); ? ? ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight = maxPostion - 200; ? ? ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? // print("下滑"); ? ? ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight = 200; ? ? ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? //在最上面 ? ? ? ? ? ? ? ? ? ? ? else if (boxHeight >= (maxPostion / 2 + 100) && ? ? ? ? ? ? ? ? ? ? ? ? ? maxPostion - 100 >= boxHeight) { ? ? ? ? ? ? ? ? ? ? ? ? // print("在最上面"); ? ? ? ? ? ? ? ? ? ? ? ? //在最下面 ? ? ? ? ? ? ? ? ? ? ? ? if (_lastMoveY < 0) { ? ? ? ? ? ? ? ? ? ? ? ? ? // print("最上面上滑"); ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? if (-height > maxPostion / 3) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? // print("下滑很大"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight = 200; ? ? ? ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? // print("下滑小"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? setState(() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? boxHeight = maxPostion / 2; ? ? ? ? ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? onVerticalDragUpdate: (v) { ? ? ? ? ? ? ? ? ? ? ? _lastMoveY = v.localPosition.dy; ? ? ? ? ? ? ? ? ? ? ? height = -(_lastMoveY - _downY); ? ? ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? ? ? child: Column( ? ? ? ? ? ? ? ? ? ? ? mainAxisSize: MainAxisSize.min, ? ? ? ? ? ? ? ? ? ? ? children: [ ? ? ? ? ? ? ? ? ? ? ? ? Container( ? ? ? ? ? ? ? ? ? ? ? ? ? color: Colors.green, ? ? ? ? ? ? ? ? ? ? ? ? ? height: 10, ? ? ? ? ? ? ? ? ? ? ? ? ? width: 200, ? ? ? ? ? ? ? ? ? ? ? ? ), ? ? ? ? ? ? ? ? ? ? ? ], ? ? ? ? ? ? ? ? ? ? )), ? ? ? ? ? ? ? )) ? ? ? ? ], ? ? ? )), ? ? ); ? } ? Widget buildListener() { ? ? return GestureDetector( ? ? ? ? onVerticalDragStart: (v) { ? ? ? ? ? print("开始垂直滑动"); ? ? ? ? ? print(v.localPosition); ? ? ? ? ? print(v); ? ? ? ? ? _downY = v.localPosition.dy; ? ? ? ? }, ? ? ? ? onVerticalDragEnd: (v) { ? ? ? ? ? print("结束垂直滑动"); ? ? ? ? ? if (_downY - _lastMoveY > 0) { ? ? ? ? ? ? print("上滑"); ? ? ? ? ? } else { ? ? ? ? ? ? print("下滑"); ? ? ? ? ? } ? ? ? ? ? print(v.primaryVelocity); ? ? ? ? ? print(v); ? ? ? ? ? print("onVerticalDragEnd---${v.velocity}---${v.primaryVelocity}"); ? ? ? ? ? setState(() {}); ? ? ? ? }, ? ? ? ? onVerticalDragUpdate: (v) { ? ? ? ? ? _lastMoveY = v.localPosition.dy; ? ? ? ? ? // print("滑动过程中"); ? ? ? ? ? // setState(() { ? ? ? ? ? // ? height = _lastMoveY - _downY; ? ? ? ? ? // }); ? ? ? ? }, ? ? ? ? child: Column( ? ? ? ? ? children: [ ? ? ? ? ? ? Container( ? ? ? ? ? ? ? height: height + 200, ? ? ? ? ? ? ? color: Colors.pink, ? ? ? ? ? ? ) ? ? ? ? ? ], ? ? ? ? )); ? } } |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 1:39:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |