首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter:如何重现这个对手指移动做出反应的底部容器

Flutter是一种跨平台的移动应用开发框架,可以通过单一代码库同时构建iOS和Android应用程序。它使用Dart语言进行开发,并提供了丰富的UI组件和功能。

要实现对手指移动做出反应的底部容器,可以使用Flutter提供的GestureDetector组件结合动画效果来实现。以下是一个示例代码:

代码语言:txt
复制
import 'package:flutter/material.dart';

class ReponsiveBottomContainer extends StatefulWidget {
  @override
  _ReponsiveBottomContainerState createState() =>
      _ReponsiveBottomContainerState();
}

class _ReponsiveBottomContainerState extends State<ReponsiveBottomContainer> {
  double _containerHeight = 100; // 容器初始高度
  double _maxContainerHeight = 300; // 容器最大高度

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Reponsive Bottom Container'),
      ),
      body: Stack(
        children: [
          Positioned(
            bottom: 0,
            left: 0,
            right: 0,
            child: GestureDetector(
              onVerticalDragUpdate: (details) {
                setState(() {
                  // 根据手指在垂直方向上的拖动距离更新容器高度
                  _containerHeight = _containerHeight - details.delta.dy;
                  if (_containerHeight < 0) {
                    _containerHeight = 0;
                  } else if (_containerHeight > _maxContainerHeight) {
                    _containerHeight = _maxContainerHeight;
                  }
                });
              },
              child: AnimatedContainer(
                duration: Duration(milliseconds: 200),
                height: _containerHeight,
                color: Colors.blue,
                child: Center(
                  child: Text(
                    'Drag me',
                    style: TextStyle(color: Colors.white, fontSize: 18),
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

void main() {
  runApp(ReponsiveBottomContainer());
}

在上述代码中,我们使用了GestureDetector组件来监听手指在垂直方向上的拖动事件,并通过setState方法更新容器的高度。同时,我们使用了AnimatedContainer组件来实现容器高度的平滑动画过渡效果。你可以根据需要调整最大容器高度和动画的持续时间。

推荐的腾讯云相关产品:腾讯云移动解决方案,提供了丰富的移动应用开发和部署服务,包括移动应用托管、移动推送、移动测试等,具体详情请参考腾讯云移动解决方案

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter | 事件处理

概述 在移动端,各个平台或者 UI 系统事件模型都是基本一致,即:一次完整事件分为三个阶段,手指按下,移动,抬起,而其他双击,拖动等都是基于这些事件 当指针按下时,Flutter 会对应用程序执行命中测试...,这个 Web 开发浏览器事件冒泡机制相似,但是 Flutter 中没有机制取消或者停止冒泡过程,而浏览器是可以停止。...orientation:指针移动方向,是一个角度值 上面只是一些常用属性,除了这些还有很多其他属性,可自行查看 API behavior 他决定子组件如何响应命中测试,他值为 HitTestBehavior...,常见效果是根据抬起手指速度做一个减速动画 效果如下: I/flutter ( 8239): 用户手指按下 Offset(134.9, 280.7) I/flutter ( 8239): 滑动 I...( 4315): down I/flutter ( 4315): onHorizontalDragEnd 复制代码 我们发现没有打印 up,这是因为拖动时,在按下手指没有移动时,拖动手势还没有完整语义

2.8K10

Flutter》-- 7.事件处理

事件处理 7.1 原始指针事件 7.1.1 基本概念 一个完整原始指针事件主要由手指按下、手指移动手指抬起以及触摸取消构成,更高基本手势都基于这些原始事件。...在Flutter原始指针事件模型中,在手指接触屏幕发起触摸事件时,Flutter会首先确定手指与屏幕发生接触位置上究竟有哪些组件,然后通过命中测试(Hit Test)交给最内层组件去响应。...PointerDownEvent、PointerMoveEvent和PointerUpEvent是Flutter原始指针事件基本组成部分,分别对应手指按下、移动和抬起事件,它们都是PointerEvent...在Flutter事件模型中PointerEvent是Flutter原始指针事件基础类,可以用它获取当前指针一些信息: 1)position:全局坐标的偏移量; 2)delta:两次指针移动事件距离...,可以很容易地各种手势进行识别。

1.8K30

探索“流畅感”——谈手势动效体验设计

例如在iOS内手势识别,有一个专门接口来做识别:PanGestureRecognizer,这个接口会在10px内先判定手指移动方向和距离,再具体触发手势来做定义。...这是为了让自己看清光标,这个时候,我们不应该把这个移动当做是把光标向下移动一行,光标本身不应该跟随向下,应该只在同一行,并且只响应左右移动。...手机端光标选区,一个我们日常习以为常光标,里面竟然有那么多小细节在里面,才能让光标变得好用。 滑动触发规则 当一个滑动手势被触发时,我应该如何判断这个手势已经被触发了呢?...我们通常来说我们日常体验,会是一个距离判断,当手指拖动容器超过一定距离,然后松手,就可以触发手势。 但是仅仅判断距离是不够。因为手势是现实世界映射。...因为取景页面可以点击对焦和测光,因此轻微滑动不应该导致整个取景页面或者底部Tab滑动,应当是当整个页面检测到一个比较大滑动动作之后,才自动移动切换。

1.3K20

如何响应用户交互事件

今天我们来聊聊Flutter如何监听和响应用户手势操作。...指针事件 指针事件表示用户交互原始触摸数据,如手指接触屏幕 PointerDownEvent、手指在屏幕上移动 PointerMoveEvent、手指抬起 PointerUpEvent,以及触摸取消...在手指接触屏幕,接触事件发起时,Flutter会确定手指与屏幕发生接触位置上究竟有哪些组件,并将触摸事件交给最内层组件去响应。事件会从这个最内层组件开始,沿着组件树向根节点向上分发。...,但Flutter只响应了子容器点击事件。...最后,我们介绍了Gesture事件处理机制:在Flutter中,尽管我们可以对一个Widget监听多个手势,或者多个Widget监听同一个手势,但Flutter会使用手势竞技场来进行各个手势PK,

2.2K10

Flutter』手势交互

1.前言经过上篇文章介绍,已经将跨页面之间跳转时候传参方式介绍给大家了,本篇文章将给大家介绍如何Flutter 中使用手势交互。...2.手势交互2.1.简介Flutter手势系统是一个强大且灵活方式,允许开发者捕获并响应触摸屏上各种用户交互。2.2.常见手势类型与常用属性Tap(点击):onTap: 当用户轻触屏幕时触发。...onLongPressMoveUpdate: 在长按期间,如果手指移动,则触发。onLongPressEnd: 长按结束时触发。...这些函数分别在用户点击、双击或长按容器时触发,并在控制台中打印相应消息。...您每一条评论我都至关重要,我会尽快给予回复。如果您觉得这篇文章您有所启发或帮助,请不吝赞赏、收藏或分享。您每一个动作都是我创作最大鼓励和支持。谢谢您阅读和陪伴!

38052

掌握Flutter底部导航栏:畅游导航之旅

通过本文学习,读者将能够熟练运用Flutter框架,设计出符合应用主题和用户体验要求精美底部导航栏,为移动应用开发与优化提供强有力支持。 2....在接下来章节中,我们将深入探讨如何Flutter中创建和定制底部导航栏,包括基本结构构建、外观定制、与页面的切换以及状态管理等方面的内容,帮助读者全面掌握底部导航栏实现技巧与方法。 3....Flutter提供了丰富选项,使开发者可以轻松自定义底部导航栏外观,包括选中项颜色和图标、背景颜色和形状、导航栏高度以及图标的大小等。在本节中,我们将介绍如何实现底部导航栏自定义外观。...总结 底部导航栏是移动应用界面设计中常见且重要组件之一,在Flutter中实现底部导航栏不仅简单易行,而且具有丰富功能和灵活定制性。...通过本文介绍,我们如何使用Flutter构建底部导航栏有了全面的了解。

22710

移植一个抖音贴纸组件到Flutter

之问——以 QA 形式来阐述我 Flutter 看法和学习经验。...2.整体讲完了,我们就可以来仔细讲讲图中流程 1.先讲横着箭头:外部/内部调用,外部需要调用 ECWS 来进行 WE 增删改查等操作时会进入这个路径,这个路径里可以有下面这些操作: 1.addElement...这里移动可以分为开始、进行中、结束。每个事件都会调用 WE 对应方法以更新其内部数据。 2.双指旋转缩放整个流程:当我们选中了一个 WE 时候可以用双指它进行缩放和旋转。...7.我图中 ECWS 也实现了一个子类 DECWS,这个类简单加两个手势: 1.单指移动缩放:类似抖音随拍,按住元素右下角时候可以用拖动来元素进行缩放和旋转。...(3).ECWS如何构建整个容器 -----代码块2----- element_container_widget.dart @override Widget build(BuildContext

1.3K20

仿腾讯课堂固定滚动列表ReactNative组件

一个是怎么判断手势滑动以及外层滚动容器底部和内层滚动到顶部? 第二个是寻找滚动组件并通知内层滚动组件开始滚动?...剩下最后一个如何通知内层容器滚动呢?先卖个关子,在解决这个问题之前,我们先来了解下Android中View事件是如何传递。 正所谓知己知彼,百战不殆,看看Android触摸事件类型有哪些?...我们想下玩手机时候手指情况:落下手指,抬起手指移动手指是三种基本操作,其实也是3种触摸事件,分别代表着MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,...而这个方法会随着手势不断调用,这时候聪明你想到了啥?根据手触摸屏幕y坐标差来判断手势往上还是往下。...= null) { //当手指移动或者抬起时候计算其值 x2 = ev.getX(); y2 = ev.getY

4.8K70

Flutter』布局组件 Container、Row、Column、Stack

decoration: 绘制在容器装饰,通常用于添加背景图像、边框、阴影等。 margin: 围绕容器外边缘空白空间。 width 和 height: 容器宽度和高度。...alignment: 控制子Widget如何容器内对齐。...最大容器(红色)位于底部,其次是绿色和蓝色容器。 children 是一个包含三个 Container 组件列表,这些组件作为 Stack 组件子元素。...每个 Container 都有自己尺寸和颜色。在 Stack 中,这些容器会按照列表中顺序层叠显示,最先出现底部,最后出现在顶部。...您每一条评论我都至关重要,我会尽快给予回复。 如果您觉得这篇文章您有所启发或帮助,请不吝赞赏、收藏或分享。 您每一个动作都是我创作最大鼓励和支持。 谢谢您阅读和陪伴!

61230

Flutter容器类组件

Flutter容器类组件 容器类Widget与布局类Widget都用作用户界面设计,两者不同在于: 布局类Widget一般都需要接收一个widget数组(children),他们直接或间接继承自(或包含...布局类Widget是按照一定排列方式来其子Widget进行排列;而容器类Widget一般只是包装其子Widget,其添加一些修饰(补白或背景色等)、变换(旋转或剪裁等)、或限制(大小等)。...⚠️注意, Flutter官方并没有Widget进行如此划分。中文版《Flutter实战》其分类主要是方便讨论和Widget功能区分记忆。...margin留白是在容器外部,而padding留白是在容器内部,读者需要记住这个差异。...如果开发者提供了抽屉菜单,那么当用户手指从屏幕左(或右)侧向里滑动时便可打开抽屉菜单。

3.9K40

开发 h5| Hybrid | 微信小程序 | 实践踩坑总结十六条

但是在容器向上滑动过程中,滑块会出现抖动,闪动效果。 ?分析这个原因,应该是iosposition表现不友好原因,这种类似的原因在小程序里也很常见。...手指按住屏幕上拉,底部多出一块空白区域。空白区域颜色,在不同app平台打开,颜色会有差别,嵌入京东app h5中空白背景色为白色,但是在微信中为灰色。 ?...分析原因: 在 iOS 中,手指按住屏幕上下拖动,会触发 touchmove 事件。这个事件触发对象是整个 webview 容器容器自然会被拖动,剩下部分会成空白。 效果如下: ?...解决方案 1 障眼法,很管用 比如对于京东app这种白色背景,如果我们background也是白色,完全可以用整个顶端容器,定位填充整个容器来解决这个问题。这样视图不会跟随上拉下滑而移动。...(单位rpx)÷2值为偶数或偶数.5时候会出现该bug,那么我们可以推到出用200.52=401,3022=604等等都会重现这个bug。

2.4K30

flutter开发技巧汇总

tab框架,这个笔者验证过,切换时候,不会导致每次都initState, 2、listview 加divider问题 这个实际上是一个小技巧,就是将你额row使用Container包裹一下,给他在加一个...但实际上,还有一个更加直接: Divider( height: 1.0, color: colorDivider, ) 他们区别就是上面那个Container容器做了一个Border,因此...4、你也许想实现一个顶部弹框,但是似乎flutter只提供了showModalBottomSheet这种,或者中间弹框,而且占据控件不会铺满整个width,所以 image.png 一个这样弹框应该如何实现呢...,虽然说可以接解决切换tab时,反复initState问题,但是Navigator.of(context).push...时候,你会发现,退出页面中包含着底部tab,怎么让底部tab不显示呢?...,做出更加好维护,规模更大app,笔者从官方举办那个“枯燥无味flutter show”节目中发现了一种比较好设计模式,BLOC模式,很好实现了代码中模型与数据分离,模型复用问题。

1.7K81

Flutter学习指南App, 一起来玩Flutter吧~

Flutter是谷歌移动UI框架,可以快速在iOS、Android、Web和PC上构建高质量原生用户界面。Flutter可以与现有的代码一起工作。...在全世界,Flutter正在被越来越多开发者和组织使用,并且Flutter是完全免费、开源。同时它也是构建未来Google Fuchsia应用主要方式。...从事移动开发这么多年, 各种跨平台技术层出不穷.从最初基于webphonegap/cordova到后来原生组件渲染react-native/weex,再到现在flutter通过自己开发了一套原生控件渲染...如何入门Flutter 1.了解Android/IOS基础知识.包括平台特性、项目结构等. 2.了解Dart基础语法知识.可点击Dart中文网进行学习. 3.学习Flutter基础知识.包括组件使用、包管理...标题)、BottomNavigationBar(底部导航栏)、 Button(按钮)、 CardView(卡片)、Containter(容器)、 Control(控制开关)、 CustomWidget(

1.7K10

flutter实现一个sideBar

因为你在上面滑动手指时候,这些索引会更随你手指滑动,明显操作体验就不对了。 比较难以知道你现在触碰到是哪个字母。 使用CupertinoPicker来放置这些索引,这种也不可以?...然而,仔细一想体验似乎也不大,他选中似乎不是你手指按住位置,放弃 使用Slider 怎么说,slider实际上浮动在一个控件上面,比如column,然后slider高度和这个column相同。...然而,竖向slider怎么实现,这是一个难点,有人已经提过这个issue了,https://github.com/flutter/flutter/issues/10500,但是官方并不打算支持,然而,...万能Stack Overflow上有这么一个解决方式, 虽然说可以实现滑动时候知道滑动到哪里,更具计算知道索引到哪个字母 手指点上去,也能瞬间移动到哪个位置,但是体验并不流畅,用起来挺复杂,放弃。...有了这货,就可以算出手指这个父控件中相对位置了 也就说可以定位出目前手指在哪个字母索引上。 ok,最后实现效果就是这样了,目前已经将这个组件上传到了pub中了,地址是这里。

2K111

flutter 起步

flutter简介Flutter是谷歌移动UI框架,可以运行在ios与android系统上,可以以完成app开发,使用情况页面大多数涉及到flutter 开发app 都是混合开发,占比并不多。...安装完成后-需要安装as(Android studio)运行 flutter doctor 检查环境缺失依赖图片根据错误提示安装相对应依赖与工具如何引用并安装第三方库pubspec.yaml管理第三方库在...这就是这个问题关键所在。...(context).pushNamed跳转路由参数以键值形式传递key:路由名字value:对应Widget4. initialRoute初始路由,当用户进入程序时,自动打开对应路由。...1、在flutter里面,一切皆组件,在组件里面撑起flutter半边天一个是无状态StatelessWidget组件,一个是有状态StatefulWidget组件2、常用组件container:容器组件

4.4K20

Flutter 中自定义动画底部导航栏

这个博客中,我们将探索Flutter自定义动画底部导航栏。我们将看到如何实现自定义动画底部导航栏演示程序以及如何在您 Flutter 应用程序中使用它。...它提供了应用程序高级视角之间快速导航。对于更大屏幕,侧面导航可能更合适。 这个演示视频展示了如何flutter 中使用自定义底部导航栏。...它展示了自定义底部导航栏将如何在您 Flutter 应用程序中工作。它显示当用户点击底部导航栏图标时,它们将被动画化并显示标签文本。当用户点击任何图标时,颜色也会发生变化和动画。...在这个小部件中,我们将添加 List页面。我们将添加四个具有不同文本容器并返回**IndexedStack()**小部件。...这是我用户交互自定义动画底部导航栏一个小介绍。

8.8K30

干货 | Flutter控件CustomScrollView原理解析及应用实践

作者简介 popeye,携程软件技术专家,关注移动端跨端技术,致力于快速,高性能地支撑业务开发。 说起移动端跨平台解决方案,Flutter无疑是最近被谈到最多的话题。...相对于React Native这样前端技术栈,Flutter更贴近于客户端技术栈特性,所以迅速获得大批原移动端开发热烈拥护,再加上其优秀渲染性能和友好开发模式,目前已经在业内被广泛使用。...2.2 触摸事件监听 下面主要介绍一下主要4个触摸事件处理: 1)DragDown ? 图6 dragDown触摸事件 如图6所示,这个事件主要是对应用户手指按下跟屏幕接触时刻。...“applyPhysicsToUserOffset”方法:当用户手势滑动超出scrollable最大或最小滑动界限时,也就是我们常说overscroll状态时,用户手势做出一定矫正。...对于这块需要思考如何做进一步优化。 四、结语 至此,对于CustomScrollView这个Flutter中比较复杂且应用广泛组件大体运行机制我们就分析完了。

1.3K30
领券