Flutter 插件 sliding_up_panel 实现从底部滑出的面板

前言

sliding_up_panel 是一个 Flutter 插件,用于实现从底部滑出的面板。它在设计上非常灵活,能够适应多种 UI 场景,比如从底部滑出的菜单、可拖动的弹出面板等。以下是 sliding_up_panel 的详细用法,包括常用的参数说明和示例代码。

请添加图片描述

1. 基础用法

在 pubspec.yaml 中添加依赖:

dependencies:sliding_up_panel: ^2.0.0+1  # 确保版本最新

安装

flutter pub add sliding_up_panel

2. 基本参数说明

参数说明
panel面板的主体内容,可以是任意 Widget
collapsed面板收起状态下的显示内容。若设置此属性,面板在最小高度时会显示此内容。
minHeight面板的最小高度,默认是 100。
maxHeight面板的最大高度,默认是屏幕高度。
borderRadius面板顶部的圆角设置,通常使用 BorderRadius.vertical 来让顶部呈现圆角。
controllerPanelController,用于控制面板的开关、滚动状态。
onPanelOpened当面板完全打开时触发的回调。
onPanelClosed当面板完全关闭时触发的回调。
parallaxEnabled是否启用视差效果。
parallaxOffset视差偏移,默认 0.1,取值范围 0-1。用于设置背景视差滑动的距离。
backdropEnabled是否在面板打开时显示背景遮罩。
backdropOpacity背景遮罩的不透明度,默认是 0.5。
snapPoint设置面板滚动的吸附点,取值范围 0-1。面板可以在指定比例的高度自动停靠。

3. 使用示例

以下是一个基础的 SlidingUpPanel 示例,其中展示了如何实现基本的拖拽、点击按钮控制面板开关、以及背景遮罩等功能。

import 'package:flutter/material.dart';
import 'package:sliding_up_panel/sliding_up_panel.dart';class SlidingUpPanelExample extends StatefulWidget {_SlidingUpPanelExampleState createState() => _SlidingUpPanelExampleState();
}class _SlidingUpPanelExampleState extends State<SlidingUpPanelExample> {final PanelController _panelController = PanelController();Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('Sliding Up Panel 示例'),),body: Stack(children: [// 主页面内容Center(child: ElevatedButton(onPressed: () {_panelController.isPanelOpen? _panelController.close(): _panelController.open();},child: Text('打开/关闭面板'),),),// 滑动面板SlidingUpPanel(controller: _panelController,minHeight: 100, // 面板最小高度maxHeight: MediaQuery.of(context).size.height * 0.8, // 最大高度为屏幕 80%borderRadius: BorderRadius.vertical(top: Radius.circular(16.0)),parallaxEnabled: true, // 启用视差效果parallaxOffset: 0.2, // 视差偏移量backdropEnabled: true, // 背景遮罩backdropOpacity: 0.5, // 背景遮罩不透明度panel: _buildPanelContent(), // 面板内容collapsed: _buildCollapsedContent(), // 收起时的显示内容onPanelOpened: () => print("面板已打开"),onPanelClosed: () => print("面板已关闭"),),],),);}// 面板展开时的内容Widget _buildPanelContent() {return Column(children: [// 拖拽提示条GestureDetector(onTap: () => _panelController.close(),child: Container(margin: EdgeInsets.symmetric(vertical: 10),height: 5,width: 50,decoration: BoxDecoration(color: Colors.grey[300],borderRadius: BorderRadius.circular(12),),),),Expanded(child: ListView.builder(itemCount: 30,itemBuilder: (context, index) {return ListTile(title: Text('Item $index'),);},),),],);}// 面板收起时的显示内容Widget _buildCollapsedContent() {return Container(decoration: BoxDecoration(color: Colors.blueAccent,borderRadius: BorderRadius.vertical(top: Radius.circular(16.0)),),child: Center(child: Text('向上滑动展开面板',style: TextStyle(color: Colors.white),),),);}
}

功能分析
• 面板展开/收起:点击主页面上的按钮可以控制面板的开关,通过 PanelController 实现。
• 视差效果:设置 parallaxEnabled: true 和 parallaxOffset 后,可以在面板拖动时实现背景内容的轻微移动,增添层次感。
• 背景遮罩:启用 backdropEnabled 后,面板打开时会显示半透明的遮罩层,可以通过 backdropOpacity 调整不透明度。
• 收起和展开状态的不同内容:collapsed 参数指定面板收起时显示的内容,而 panel 参数指定面板完全展开时的内容。

总结

sliding_up_panel 是一个功能丰富、设计灵活的插件,非常适合用于需要从底部滑出的面板场景。


感谢您的阅读和参与,HH思无邪愿与您一起在技术的道路上不断探索。如果您喜欢这篇文章,不妨留下您宝贵的赞!如果您对文章有任何疑问或建议,欢迎在评论区留言,我会第一时间处理,您的支持是我前行的动力,愿我们都能成为更好的自己!

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

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

相关文章

出海企业如何借助云计算平台实现多区域部署?

云计算de小白 如需进一步了解&#xff0c;请单击链接了解有关 Akamai 云计算的更多信息 在本文中我们将告诉大家如何在Linode云计算平台上借助VLAN快速实现多地域部署。 首先我们需要明确一些基本概念和思想&#xff1a; 部署多区域 VLAN 为了在多区域部署中在不同的 VLAN …

Linux(CentOS)安装 JDK

CentOS版本&#xff1a;CentOS 7 JDK版本&#xff1a;JDK17 1、下载 JDK 官网&#xff1a;https://www.oracle.com/ 2、上传 JDK 文件到 CentOS 使用FinalShell远程登录工具&#xff0c;并且使用 root 用户连接登录&#xff08;注意这里说的root用户连接登录是指这样的&…

多边形电子围栏算法

在日常生活工作中&#xff0c;我们经常接触到电子围栏&#xff0c;大部分的电子围栏基本上都是圆形的&#xff0c;想要知道某一个点是否在圆形区域内&#xff0c;算法很简单&#xff0c;只需要知道这个圆形区域的圆心坐标和被测点的坐标的距离是否小于半径即可。两点的距离小于…

柯桥学日语J.TEST考试是什么?J.TEST考试报名

J.TEST考试是什么&#xff1f; J.TEST全称为实用日本语鉴定考试&#xff0c;在2007年获得了国家劳动和社会保障部的认可&#xff0c;作为面对母语为非日本语的人员进行的日本语能力测试&#xff0c;J.TEST被越来越多的日本企业所认可&#xff0c;由于其对日语的实际运用能力具有…

谈谈ssh-keygen进行多host配置及使用

背景 传统的Telnet、FTP协议都是使用明文传输数据&#xff0c;存在一定的安全风险&#xff0c;如果传输数据被截取&#xff0c;可能造成数据泄露风险&#xff0c;尤其对于敏感数据&#xff0c;泄露造成的损失无法估计。最近公司、github等平台都不再支持http方式进行代码下载工…

谷粒商城-高级篇-认证服务

1、环境搭建 1、创建gulimall-auth-server模块 2、导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

独显装完ubuntu后启动黑屏显示/dev/sda:clean files blocks的解决方案

解决方案如下&#xff1a; 选中Ubuntu按E键 在编辑界面倒数第2行的linux那行&#xff08;后面有quiet splash选项&#xff09;的最后添加nomodeset 然后按F10保存重启 然后管理员权限打开/etc/modprobe.d/blacklist.conf&#xff0c;在文件末尾添加&#xff1a; blacklist…

ArcGIS 地理信息系统 任意文件读取漏洞复现

0x01 产品简介 ArcGIS是由美国Esri公司研发的地理信息系统(GIS)软件,它整合了数据库、软件工程、人工智能、网络技术、云计算等主流的IT技术,旨在为用户提供一套完整的、开放的企业级GIS解决方案,它包含了一套带有用户界面组件的Windows桌面应用。可以实现从简单到复杂的…

Linux 系统结构

Linux系统一般有4个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。 1. linux内核 内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;它…

SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”

SLF4J常见问题 1、SLF4J简介2、SLF4J实现原理3、SLF4J常见问题 1、SLF4J简介 SLF4J&#xff08;Simple Logging Facade for Java&#xff09;是一个为Java程序提供日志输出的统一接口&#xff0c;并不具备具体的日志实现方案&#xff0c;类似JDBC&#xff0c;SLF4J只做两件事&a…

使用ThorUi

摘要&#xff1a; 官网 今天遇到一个老项目&#xff0c;使用的是ThorUi组件库&#xff01;之前没有用过这组件库&#xff0c;所以记录一下不同框架是使用情况&#xff01; ThorUI 是一个基于 Thorium 的 UI 框架&#xff0c;用于构建跨平台的桌面应用程序。如果你打算使用 Thor…

OceanBase中,如何解读 obdiag 收集的火焰图 【DBA早下班系列】

1. 前言 在之前的文章 遇到性能问题&#xff0c;如何给OceanBase“拍CT“&#xff08;火焰图与扁鹊图&#xff09;中&#xff0c;分享了obdiag 快速收集火焰图的方法&#xff0c;那么&#xff0c;紧接着的问题便是&#xff1a;收集到火焰图和扁鹊图之后&#xff0c;该如何解读…

Day41 | 动态规划 :完全背包应用 完全平方数单词拆分(类比爬楼梯)

Day41 | 动态规划 &#xff1a;完全背包应用 完全平方数&&单词拆分&#xff08;类比爬楼梯&#xff09; 动态规划应该如何学习&#xff1f;-CSDN博客 01背包模板 | 学习总结-CSDN博客 完全背包模板总结-CSDN博客 难点&#xff1a; 代码都不难写&#xff0c;如何想…

《 C++ 修炼全景指南:十九 》想懂数据库?深入 B 树的世界,揭示高效存储背后的逻辑

摘要 本文深入探讨了 B 树的原理、操作、性能优化及其实际应用。B 树作为一种平衡多路树结构&#xff0c;因其高效的查找、插入和删除操作广泛应用于数据库与文件系统中。文章首先介绍了 B 树的定义与性质&#xff0c;并详细阐述了节点分裂、合并等核心操作的实现方法。接着&a…

选择小练习

条件语句 if 条件语句&#xff0c;也叫作选择语句、判断语句。根绝特定条件判断是否成立&#xff0c;执行不同的语句段。简单来说&#xff0c;满足条件执行&#xff0c;不满足不执行。 条件语句是使用关键字 if 做判断&#xff0c;根据不同情况结合不同的关键字else 或者 eli…

单片机串口接收状态机STM32

单片机串口接收状态机stm32 前言 项目的芯片stm32转国产&#xff0c;国产芯片的串口DMA接收功能测试不通过&#xff0c;所以要由原本很容易配置的串口空闲中断触发DMA接收数据的方式转为串口逐字节接收的状态机接收数据 两种方式各有优劣&#xff0c;不过我的芯片已经主频跑…

BAAI 的 Aquila-VL-2B-llava-qwen: 促进视觉语言理解

简介 在人工智能领域&#xff0c;北京人工智能学会&#xff08;BAAI&#xff09;做出了重要贡献&#xff1a; 在人工智能领域&#xff0c;北京人工智能研究所&#xff08;BAAI&#xff09;开发的 Aquila-VL-2B-llava-qwen 模型做出了重大贡献。这一创新模型建立在 LLava-one-v…

测试实项中的偶必现难测bug--短信触发H5拒绝行为

问题描述: 企业邀请其他人加入团队,发送邀请短信给对方,对方通过短信链接跳转到H5页面,输入手机后,点击发送验证码,前提是短信通知验证弹窗需要打开,收到短信验证码后,点击一键代入,会触发拒绝加入行为。 需求: 由于我们的邀请链接是一次性的,一旦有用户确认加入或…

MCU的OTA升级(未完-持续更新)

1.术语 ISP : In-System Programming 在系统编程&#xff0c;是一种通过MCU&#xff08;微控制器单元&#xff09;上的内置引导程序&#xff08;BootLoader&#xff09;来实现对芯片内部存储器&#xff08;如Flash&#xff09;进行编程的技术。 华大目前对应的ISP IAP&…

即将盛大启幕“2025南京软件产业博览会·南京软博会”

在今年的南京软博会上&#xff0c;科技创新的浪潮再次席卷了整个会展现场&#xff0c;来自全球的软件产业精英们汇聚一堂&#xff0c;共同见证了软件产业的最新成果与未来趋势。随着云计算、大数据、人工智能等新兴技术的蓬勃发展&#xff0c;软件产业正站在一个前所未有的历史…