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

文章目录

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

我们在上一章回中介绍了滑动窗口相关的内容相关的内容,本章回中将介绍如何实现 滑动菜单.闲话休提,让我们一起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.mzph.cn/news/87700.shtml

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

相关文章

自注意力机制

回顾以下注意力机制: 自注意力机制 Self-Attention的关键点 在于 K ≈ \approx ≈V ≈ \approx ≈Q 来源于同一个X,三者是同源的,通过 W Q W_Q WQ​, W K W_K WK​, W V W_V WV​做了一层线性变换。 接下来步骤和注意力机制一模一样。 …

基于微信小程序的线上教育课程付费商城(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【项目实战】Linux系统下jar包自启动

什么是jar包自启动 在Linux系统中,"jar包自启动"是指通过配置将Java程序打包成可执行的Jar文件,并设置其在系统启动时自动运行。以下是与jar包自启动相关的一些概念: Jar文件:Jar(Java Archive&#xff09…

K-最近邻算法

一、说明 KNN算法是一个分类算法,基本数学模型是距离模型。K-最近邻是一种超级简单的监督学习算法。它可以应用于分类和回归问题。虽然它是在 1950 年代引入的,但今天仍在使用。然而如何实现,本文将给出具体描述。 来源:维基百科 …

高速USB转4路RS422串口

基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动程序,可支持Windows、Linux、Android、macOS等操作系统。因CDC类协议和类驱动的原…

Android 10.0 系统开启和关闭黑白模式主题功能实现

1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

DA3 网站的第10位用户信息读取

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID …

git:一、GIT介绍+安装+全局配置+基础操作

版本管理系统(SVN和Git): 集中式版本控制系统(SVN) SVN是集中式版本控制系统,版本库是集中放在中央服务器的. 工作流程如下: 1.从中央服务器远程仓库下载代码 2.修改后将代码提交到中央服务器远程仓库…

with ldid... /opt/MonkeyDev/bin/md: line 326: ldid: command not found

吐槽傻逼xcode 根据提示 执行了这个脚本/opt/MonkeyDev/bin/md 往这里面添加你brew install 安装文件的目录即可

华为云云耀云服务器L实例评测|如何保障华为云云耀云服务器L实例的安全和性能

引言 云耀云服务器L实例是华为云提供的高性能计算实例,为用户提供稳定可靠的云计算环境。为了保障实例的安全和性能,用户可以通过设置防火墙和安全组策略来限制网络访问和防止恶意攻击。华为云提供了灵活的管理工具,用户可以通过控制台、API…

关于ElementUI之首页导航与左侧菜单实现

目录 一.Mock 1.1.什么是Mock.js 1.2.特点 1.3.安装与配置 1.3.1. 安装mock.js 1.3.2.引入mock.js 1.4.mockjs使用 1.4.1.定义测试数据文件 1.4.2.mock拦截Ajax请求 1.4.3.界面代码优化 二.总线 2.1.是什么 2.2.前期准备 2.3.配置组件与路由关系 2.3.1. 配置组件 …

客户端负载均衡_负载均衡策略

以前的Ribbon有多种负载均衡策略 RandomRule - 随性而为 解释: 随机 RoundRobinRule - 按部就班 解释: 轮询 RetryRule - 卷土重来 解释: 先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试。 Weigh…

北京智和信通亮相2023IT运维大会,共话数智浪潮下自动化运维新生态

2023年9月21日,由IT运维网、《网络安全和信息化》杂志社联合主办的“2023(第十四届)IT运维大会”在北京成功举办。大会以“以数为基 智引未来”为主题,北京智和信通技术有限公司(下文简称:北京智和信通&…

【学习草稿】背包问题

一、01背包问题 图解详细解析 (转载) https://blog.csdn.net/qq_37767455/article/details/99086678 :Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物…

Kubernetes组件和架构简介

目录 一.概念简介 1.含义: 2.主要功能: 3.相关概念: 二.组件和架构介绍 1.master:集群的控制平面,管理集群 2.node:集群的数据平面,为容器提供工作环境 3.kubernetes简单架构图解 一.概…

Kafka 运维必懂:从原理到调优,看完秒变大佬

1 Kafka 概述 Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。 目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流…

腾讯云cvm云硬盘扩容

过去一直记得腾讯云的系统盘扩容,关于系统盘的扩容直接点资源调整-云硬盘扩容 系统盘扩容后就可以直接使用的? 但是现在操作了发现vda 200G 但是现在vda1不能自动扩容了? 腾讯云cvm云硬盘扩容 先看一眼官方文档吧:在线扩展系统盘分区及文…

LeetCode每日一题:1993. 树上的操作(2023.9.23 C++)

目录 1993. 树上的操作 题目描述: 实现代码与解析: 模拟 dfs 原理思路: 1993. 树上的操作 题目描述: 给你一棵 n 个节点的树,编号从 0 到 n - 1 ,以父节点数组 parent 的形式给出,其中 p…

Android开发MVP架构记录

Android开发MVP架构记录 安卓的MVP(Model-View-Presenter)架构是一种常见的软件设计模式,用于帮助开发者组织和分离应用程序的不同组成部分。MVP架构的目标是将应用程序的业务逻辑(Presenter)、用户界面(V…

Mybatis自动映射Java对象 与 MySQL8后的JSON数据

文章目录 Mybatis自动映射Java对象 与 MySQL8后的JSON数据1.转化成为正常Json类型1.1 JsonTypeHander1.2 ListJsonTypeHandler 负责List<T> 类型1.3 实体类1.4 mapper1.5 测试类 2. 存储为携带类型的Json Mybatis自动映射Java对象 与 MySQL8后的JSON数据 1.转化成为正常…