Flutter学习日记之Slidable实现侧滑菜单
本文地址: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包含四种动作:
- SlidableBehindActionPane:滑动动作在项目滑动时留在项目后面
- SlidableScrollActionPane:滑动操作会在项目滑动时跟随它
- SlidableDrawerActionPane:当项目滑动时,滑动动作像抽屉一样动画
- 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实现侧滑菜单相关推荐
- Flutter学习日记之底部导航栏BottomNavigationBar组件的使用
本文地址:https://blog.csdn.net/qq_40785165/article/details/116953235,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 空袋子 ...
- Flutter | 超简单仿微信QQ侧滑菜单组件(改)
文章目录 一.明确需求 二.实现需求 1. 滑动菜单实现使用`SingleChildScrollView`: 2. 列表滑动不够距离则菜单再次隐藏,距离足够则完全展示菜单. 3. 菜单支持事件处理. ...
- Flutter学习日记之使用路由进行页面切换
本文地址:https://blog.csdn.net/qq_40785165/article/details/116900126,转载需附上此地址 大家好,我是小黑,一个还没秃头的程序员~~~ 你多学 ...
- flutter scrollview_简单易上手的Flutter学习指南App,2020一起来玩转Flutter吧~
Flutter是谷歌的移动UI框架,可以快速在iOS.Android.Web和PC上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...
- iOS程序猿的flutter学习之路
日常学习Flutter开发的积累 推荐一些平时自己学习Flutter开发当中接触到的优秀文章 -------------------------基础知识 ----------------------- ...
- Flutter 学习
Flutter 学习 参照:https://book.flutterchina.club/ 参照:https://flutter.cn/docs/development/platform-integr ...
- Flutter学习总纲教程
Flutter学习总纲教程 Flutter Widget 目录 准备 学习Flutter之前,必须要了解(不需要多么精通,但至少要了解)Dart的基础特性. Dart基础特性 · Dart 是 G ...
- Android自定义View之仿QQ侧滑菜单实现
最近,由于正在做的一个应用中要用到侧滑菜单,所以通过查资料看视频,学习了一下自定义View,实现一个类似于QQ的侧滑菜单,顺便还将其封装为自定义组件,可以实现类似QQ的侧滑菜单和抽屉式侧滑菜单两种菜单 ...
- Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现
嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...
最新文章
- pandas的series和dataframe
- agc007B - Construct Sequences(构造)
- HIGHGUI ERROR: V4L2: Pixel format of incoming image is unsupported by OpenCV
- C#几种常用的排序算法
- python进制转化大全
- Dos 中实现else if 功能
- MySQL审计特性调研
- linux精简版远程登录,Linux下如何定制SSH来简化远程访问
- Python中文本文件的读取(包含指针移动)
- GPFS文件系统笔记
- POJ 2068 NIm (dp博弈,每个人都有特定的取最大值)
- python中pop类型_Python基础之基本数据类型
- 如何使用python批量压缩图片_使用python脚本批量压缩图片大小
- [前端面试经]百度和好未来的面试官把我榨干了
- 计算机发展历史简述及CPU构成及工作过程——Crash Course内容整理
- nico老是显示服务器升级,Nico会员服务条款
- sequelize 向数据库插入数据,自增id该如何添加
- 大聪明教你学Java | Spring Boot 整合 Redis 实现访问量统计
- 2021数字孪生城市白皮书 附下载
- 「北京seo」seo是什么?工作细则是什么?