第一百五十四回 如何实现滑动菜单

news2024/11/25 11:03:14

文章目录

  • 概念介绍
  • 实现方法
  • 示例代码
  • 体验分享

我们在上一章回中介绍了滑动窗口相关的内容相关的内容,本章回中将介绍如何实现 滑动菜单.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在本章回中介绍的滑动菜单表示屏幕上向左或者向右滑动滑动时弹出一个菜单,菜单中提供相关的菜单项,用来实现一些功能。如果有看官不理解的话,可以查看下面的程序运行效果图,向左和向右滑动都可以拉出菜单,而且菜单的内容不同。本章回中将介绍如何实现这样的滑动菜单。

在这里插入图片描述

实现方法

我们在这里实现滑动菜单需要借助flutter_slidable这个三方包,因此我们主要介绍一下这个包的使用方法,掌握这些方法后就可以实现滑动菜单。

包中把滑动菜单封装成了Slidable组件,我们可以向使用其它组件一样使用它,因此我主要介绍Slidable组件中常用的属性,掌握常用的属性后就可以通过这些属性来实现滑动菜单。

  • direction属性:主要控制滑动方向,分水平和垂直两个方向,默认是水平方向;
  • startActionPane属性:主要控制滑动时显示的菜单,向右或者向下滑动时显示的菜单;
  • endActionPane属性:主要控制滑动时显示的菜单,向左或者向上滑动时显示的菜单;
  • child属性:用来存放滑动菜单依附的组件,在该组件上向左,向右滑动时可以显示滑动菜单;

上面介绍的这些属性中我们重点介绍一下两个start/endActionPane属性,它们是ActionPane类型,该类型是flutter_slidable包封装的类型,它的常用属性有有两个:

  • motion属性:用来控制菜单的滑出动画,比如折叠动画,抽屉动画。包中把动画封装成了独立的类,直接使用就可以。
  • childern属性:用来控制菜单中显示的菜单项目,最好使用SlidableAction组件来赋值,这是包中封装好的组件,可以通过它的属性配置菜单名称,颜色,以及菜单的功能,也就是响应点击菜单时的方法。

示例代码

Slidable(
  key: const ValueKey(0),
  ///添加滑动时显示的菜单,向右或者向下滑动时显示的菜单
  startActionPane: ActionPane(
    dismissible: DismissiblePane(onDismissed: (){},),
    ///控制滑动时菜单显示的动画效果
    // motion: const ScrollMotion(),
    motion: const DrawerMotion(),
    ///数量超过2个后就显示不全了
    children: [
      SlidableAction(
        onPressed:(BuildContext cxt){} ,
        backgroundColor: Colors.blue,
        foregroundColor: Colors.white,
        icon: Icons.delete,
        label: "Delete",
      ),
      SlidableAction(
        onPressed:(BuildContext cxt){} ,
        backgroundColor: Colors.blue,
        foregroundColor: Colors.green,
        icon: Icons.share,
        label: "Share",
      ),
       SlidableAction(
        onPressed:(BuildContext cxt){} ,
        backgroundColor: Colors.blue,
        foregroundColor: Colors.white,
        icon: Icons.delete,
        label: "Delete",
      ),
    ],
  ),
  ///添加滑动时显示的菜单,向左或者向上滑动时显示的菜单
  endActionPane: ActionPane(
      motion: const ScrollMotion(),
      children: [
        SlidableAction(
          flex: 2,
          onPressed:(BuildContext cxt){} ,
          backgroundColor: Colors.yellowAccent,
          foregroundColor: Colors.redAccent,
          icon: Icons.archive,
          label: "Archive",
        ),
        SlidableAction(
          onPressed:(BuildContext cxt){} ,
          backgroundColor: Colors.yellowAccent,
          foregroundColor: Colors.redAccent,
          icon: Icons.save,
          label: "Save",
        ),
      ],
  ),
  ///拉出菜单的高度与child的高度相同,修改滑动方向后最好放大高度,不然菜单都显不全
  child: const SizedBox(
      height: 80,
      child: ListTile(title: Text('Slid me'),),
  ),
)

上面的示例代码演示了实现滑动菜单的细节,大家可以自己动手去实践。此外,这个代码用来实现左右滑动菜单,大家可以修改direction属性为垂直方向,这样可以在上下方向滑动时拉出菜单。

体验分享

最后分享一些我使用这个包的体验,我最开始使用这个包以为是可以同时从四个方向滑动出菜单,而且菜单类似上一章回中滑动窗口,使用后发现不是预想的效果,只能在水平或者垂直方向上二选一,而且垂直方向滑出的菜单效果不好。滑动时拉出的是一个可以调整高度的菜单,而不是窗口,滑动菜单中的菜单项目不能太多,否则显示不完整。我感觉这个滑动菜单就是模仿ios操作而设计的,在Android上使用的场景比较少。

看官们,与"如何实现滑动菜单"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1040553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android最好用的日志打印库(自动追踪日志代码位置)

给大家推荐一个自己写的日志打印的库,我愿称之为最强日志打印库:BytUtilLog Byt是Big一统的缩写,大一统日志打印库,哈哈!搞个笑,很早就写好了,但后面忙起来就忘了写一篇文章推一下它了&#xff…

Spring 学习(八)事务管理

1. 事务 1.1 事务的 ACID 原则 数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列。事务必须满足 ACID 原则——即原子性(Atomicity)、一致性(Consistency)、隔离性(Iso…

Keycloak怎么接入短信登录

Keycloak的介绍 Keycloak是一个开源软体产品,旨在为现代的应用程式和服务,提供包含身份管理和访问管理功能的单点登录工具。截至2018年3月,红帽公司负责管理这一JBoss社区项目,并将其作为他们RH-SSO产品的上游项目。[2]从概念的角…

python+turtle

turtle画图基本操作 基本代码 直接生成图形,不显示乌龟运动轨迹。turtle.tracer(False) import turtle turtle.pensize(1)turtle.tracer(False)#直接生成图形,不显示乌龟运动轨迹。 for i in range(1,100,10):turtle.circle(i)生成图形: 生…

怎样提取视频中的音频?十秒教会你

怎么提取视频中的音频?我们平时在刷视频的时候会听到一些很好听的背景音乐,但有时候我们会发现有的背景音乐音源下载不了,而有的音频是别人自己制作的,根本没有地方可以下载音频,那么我们想要获得视频里的音频要怎么办…

labview 混合信号图 多曲线分组

如果你遇到了混合信号图 多曲线分组显示的问题,本文能给你帮助。 在文章的最好,列出了参考程序下载链接。 一个混合信号图中可包含多个绘图区域。 但一个绘图区域仅能显示数字曲线或者模拟曲线之一,无法兼有二者。 以下显示的分两组&#…

Spring面试题22:Spring支持哪些ORM框架?优缺点分别是什么?Spring可以通过哪些方式访问Hibernate?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring支持哪些ORM框架?优缺点分别是什么? Spring 支持多种 ORM(对象关系映射)框架,其中包括: Hibernate:Hibernate 是一个强大的 ORM 框架…

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

LLM-TAP随笔——有监督微调【深度学习】【PyTorch】【LLM】

文章目录 5、 有监督微调5.1、提示学习&语境学习5.2、高效微调5.3、模型上下文窗口扩展5.4、指令数据构建5.5、开源指令数据集 5、 有监督微调 5.1、提示学习&语境学习 提示学习 完成预测的三个阶段:提示添加、答案搜索、答案映射 提示添加 “[X] 我感到…

NPDP产品经理认证怎么报名?考试难度大吗?

PMDA(Product Development and Management Association)是美国产品开发与管理协会,在中国由中国人才交流基金会培训中心举办NPDP(New Product Development Professional)考试,该考试是产品经理国际资格认证…

回归预测 | MATLAB实现RUN-XGBoost龙格库塔优化极限梯度提升树多输入回归预测

回归预测 | MATLAB实现RUN-XGBoost多输入回归预测 目录 回归预测 | MATLAB实现RUN-XGBoost多输入回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现RUN-XGBoost多输入回归预测(完整源码和数据) 1.龙格库塔优化XGBoost,…

【Linux】详解线程第二篇——用黄牛抢陈奕迅演唱会门票的例子来讲解【 线程互斥与锁 】

线程互斥 与 锁 前言正式开始黄牛抢票demo问题解释if判断。tickets-\-数据不一致 临界资源与临界区互斥锁全局锁局部锁几个问题 互斥锁的原理单个线程时多线程申请锁总结申请锁流程 可重入和线程安全常见的线程不安全的情况常见的线程安全的情况常见不可重入的情况常见可重入的…

premiere 新建 视频导入 视频拼接 视频截取 多余视频删除

1 新建项目 文件 -> 新建 -> 项目 2 导入 2.1 方法一 直接从本地 将 文件拖入对应的文件夹 2.2 方法二 鼠标右键在指定素材文件夹, 选择导入 选择对应本地文件夹对应素材 3 预设 -> 粗剪 -> 在指定模块处 创建序列预设 3.1 指定模块处 鼠标右键 -> 新建项目…

Redis的集群方案

Redis的集群方案总共有3种: 1.主从同步 2.哨兵模式 3.分片集群 一.Redis的主从同步 单节点Redis的并发能力是有限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离,一般都是一主多从,…

体育运动模板推荐

最近的朋友圈一半是晒国庆城市布置的美景的,一半当然就是杭州亚运会了。目前杭州亚运会正在如火如荼的进行中,绝美的开幕式,运动健儿们奋力拼搏的精神,在杭州亚运会的舞台上,每个人都是独一无二的英雄。亚运会的舞台&a…

华为 Mate60 系列全球发布:地表最强黑科技旗舰,打破传统,引领未来!

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

‘nvcc‘不是内部或外部命令,也不是可运行的程序或批处理文件

一、首先检查是否正确安装 winR cmd打开终端,cd转到CUDA的位置,即C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2\extras\demo_suite,然后输入bandwidthTest.exe并回车进行测试,最后输入deviceQuery.exe并回车进行测试,若Result PASS,则表示是安装成功了的 二、…

Redis集群方式

Redis有三种集群方式:主从复制,哨兵模式和集群。 1.主从复制 主从复制原理 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令&…

【yolov1】yoloLoss.py

1.计算预测中心点与真实中心点的损失。 2.计算预测的宽高与真实宽高的损失。用根号,是使得小框对误差更敏感。第三项负责计算置信度的误差 标签值是预测框真实框的IOU,作为标签值。 第四项是不负责检测目标的框,让它们的Loss值越小越好。让…