本文地址:https://blog.csdn.net/qq_40785165/article/details/120298992,转载需附上此链接

敏而好学,不耻下问。

大家好,我是小黑,一个还没秃头的程序员~~~

相信大家一定经常遇到一种需求,需要在列表的单项上进行一个方向的滑动,从而显示某些可用的操作,比如【删除】【置顶】【设置成已读】等操作,这次介绍的就是用于实现这种需求的组件------flutter_slidable,组件名为Slidable

效果如图:

不多废话,正文直接开始
首先先添加依赖并导入包:

flutter_slidable: ^0.6.0
import 'package:flutter_slidable/flutter_slidable.dart';

Slide基本属性如下:

参数 说明
key 一般设置成唯一值,以防删除时报错
child 列表单项布局
actionPane 滑动动作:见下方详解
actions 从左侧滑出的菜单项
secondaryActions 从右方滑出的菜单项
actionExtentRatio 每个菜单项占列表单行宽度的比例
direction 滑动的方向
enabled 是否可用
dismissal SlidableDismissal组件,用于设置关闭以及将要关闭的监听
controller 设置了之后可以每次就打开一个单项的操作菜单

actionPane包含四种动作:

  1. SlidableBehindActionPane:滑动动作在项目滑动时留在项目后面
  2. SlidableScrollActionPane:滑动操作会在项目滑动时跟随它
  3. SlidableDrawerActionPane:当项目滑动时,滑动动作像抽屉一样动画
  4. SlidableStrechActionPane:当项目滑动时,滑动动作会拉伸

SlidableDismissal组件用于设置关闭事件的监听,可以用于在滑动组件关闭时做逻辑处理,也可实现在即将关闭时进行逻辑处理并取消关闭

SlidableDismissal的基本属性如下:

参数 说明
child 在关闭时出现的动作组件,如SlidableDrawerDismissal会以抽屉的方式进行关闭
onDismissed 左侧/右侧菜单的关闭
onWillDismiss 在小部件被解散之前调用。 如果调用返回false,则取消关闭动作
dragDismissible 设置是否可用滑动进行关闭菜单项
dismissThresholds 设置只能单侧关闭

完整代码如下:

  @overrideWidget build(BuildContext context) {return ListView.separated(itemBuilder: (context, index) {return Slidable(// showAllActionsThreshold: 0.3,//action占全部的比例actionExtentRatio: 0.15,controller: _slidableController,//列表中只有一个能滑动key: Key(UniqueKey().toString()),//主界面child: ListTile(onTap: () { },title: Text("用户${index}"),leading: Image.asset("assets/images/icon_friend.png",width: 30, height: 30),subtitle: Text("你好"),),//滑动的动画actionPane: SlidableStrechActionPane(),//左侧滑出actions: [buildIconSlideAction("删除", Icons.delete, Colors.red),buildIconSlideAction("置顶", Icons.vertical_align_top, Colors.blue),buildIconSlideAction("已读", Icons.mark_email_read_outlined, Colors.orange)],//右侧滑出secondaryActions: [buildIconSlideAction("删除", Icons.delete, Colors.red)],//关闭监听dismissal: SlidableDismissal(dismissThresholds: <SlideActionType, double>{//只能单侧关闭SlideActionType.primary: 1.0,SlideActionType.secondary: 1.0,},child: SlidableDrawerDismissal(),onDismissed: (actionType) {print("actionType==$actionType");setState(() {//操作});},//即将关闭,可以取消关闭的动作onWillDismiss: (actionType) {Fluttertoast.showToast(msg: "无法删除");return false;},),);},separatorBuilder: (context, index) {return Divider(height: 1,color: ColorUtils.color_grey_dd,);},itemCount: 5);}Widget buildIconSlideAction(String title, IconData icons, Color color) {return Container(width: 50,child: IconSlideAction(caption: title,color: color,icon: icons,onTap: () {Fluttertoast.showToast(msg: title);},),);}

到此为止,Slidable组件的使用就介绍完毕了,更多关于Flutter的内容日后会持续更新,感兴趣的朋友可以点个关注,大家晚安!

Flutter学习日记之Slidable实现侧滑菜单相关推荐

  1. Flutter学习日记之底部导航栏BottomNavigationBar组件的使用

    本文地址:https://blog.csdn.net/qq_40785165/article/details/116953235,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 空袋子 ...

  2. Flutter | 超简单仿微信QQ侧滑菜单组件(改)

    文章目录 一.明确需求 二.实现需求 1. 滑动菜单实现使用`SingleChildScrollView`: 2. 列表滑动不够距离则菜单再次隐藏,距离足够则完全展示菜单. 3. 菜单支持事件处理. ...

  3. Flutter学习日记之使用路由进行页面切换

    本文地址:https://blog.csdn.net/qq_40785165/article/details/116900126,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 你多学 ...

  4. flutter scrollview_简单易上手的Flutter学习指南App,2020一起来玩转Flutter吧~

    Flutter是谷歌的移动UI框架,可以快速在iOS.Android.Web和PC上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...

  5. iOS程序猿的flutter学习之路

    日常学习Flutter开发的积累 推荐一些平时自己学习Flutter开发当中接触到的优秀文章 -------------------------基础知识 ----------------------- ...

  6. Flutter 学习

    Flutter 学习 参照:https://book.flutterchina.club/ 参照:https://flutter.cn/docs/development/platform-integr ...

  7. Flutter学习总纲教程

    Flutter学习总纲教程 Flutter Widget 目录 准备 学习Flutter之前,必须要了解(不需要多么精通,但至少要了解)Dart的基础特性. Dart基础特性  ·  Dart 是 G ...

  8. Android自定义View之仿QQ侧滑菜单实现

    最近,由于正在做的一个应用中要用到侧滑菜单,所以通过查资料看视频,学习了一下自定义View,实现一个类似于QQ的侧滑菜单,顺便还将其封装为自定义组件,可以实现类似QQ的侧滑菜单和抽屉式侧滑菜单两种菜单 ...

  9. Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现

    嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...

最新文章

  1. pandas的series和dataframe
  2. agc007B - Construct Sequences(构造)
  3. HIGHGUI ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
  4. C#几种常用的排序算法
  5. python进制转化大全
  6. Dos 中实现else if 功能
  7. MySQL审计特性调研
  8. linux精简版远程登录,Linux下如何定制SSH来简化远程访问
  9. Python中文本文件的读取(包含指针移动)
  10. GPFS文件系统笔记
  11. POJ 2068 NIm (dp博弈,每个人都有特定的取最大值)
  12. python中pop类型_Python基础之基本数据类型
  13. 如何使用python批量压缩图片_使用python脚本批量压缩图片大小
  14. [前端面试经]百度和好未来的面试官把我榨干了
  15. 计算机发展历史简述及CPU构成及工作过程——Crash Course内容整理
  16. nico老是显示服务器升级,Nico会员服务条款
  17. sequelize 向数据库插入数据,自增id该如何添加
  18. 大聪明教你学Java | Spring Boot 整合 Redis 实现访问量统计
  19. 2021数字孪生城市白皮书 附下载
  20. 「北京seo」seo是什么?工作细则是什么?

热门文章

  1. ios大量缓存文件清理速度慢的问题
  2. 计算机文件的含义记录在,第三章计算机基本操作.doc
  3. 实验报告-Python数据可视化之Pyecharts
  4. android 设备重启代码
  5. 抖音短视频如何快速涨粉变现?抖音运营小技巧
  6. 【2020年底攻略】支付宝沾沾卡怎么获得 沾沾卡获取攻略分享
  7. CF 云环境利用框架,一键化利用云上内网
  8. 为什么需要考虑浏览器兼容,浏览器渲染引擎在浏览器中的作用是什么样的?
  9. 弘辽科技:拼多多直通车的钱怎么申请退出?如何操作?
  10. C# 实现NPOI的Excel导出