首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何知道DraggableScrollableSheet是折叠的还是展开的

DraggableScrollableSheet是一个Flutter Widget,用于在屏幕上创建一个可拖动的可滚动面板。它可以用于创建可折叠的或展开的面板,具体取决于其当前的状态。

要知道DraggableScrollableSheet是折叠的还是展开的,可以通过检查其状态属性来确定。DraggableScrollableSheet有一个controller属性,可以使用该属性来控制面板的状态。该控制器是一个ScrollController对象,可以使用它来监听面板的滚动位置和状态。

首先,需要创建一个ScrollController对象并将其分配给DraggableScrollableSheet的controller属性。然后,可以使用该控制器来监听面板的滚动位置和状态。可以通过添加一个滚动监听器来监听面板的滚动位置,并根据滚动位置的变化来判断面板是折叠的还是展开的。

以下是一个示例代码,演示如何使用DraggableScrollableSheet和ScrollController来判断面板的折叠状态:

代码语言:txt
复制
ScrollController _scrollController = ScrollController();
bool _isExpanded = true;

@override
void initState() {
  super.initState();
  _scrollController.addListener(_handleScroll);
}

void _handleScroll() {
  if (_scrollController.offset <= _scrollController.position.minScrollExtent) {
    setState(() {
      _isExpanded = true;
    });
  } else if (_scrollController.offset >= _scrollController.position.maxScrollExtent) {
    setState(() {
      _isExpanded = false;
    });
  }
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('DraggableScrollableSheet Demo'),
    ),
    body: Stack(
      children: [
        ListView.builder(
          controller: _scrollController,
          itemCount: 100,
          itemBuilder: (context, index) {
            return ListTile(
              title: Text('Item $index'),
            );
          },
        ),
        DraggableScrollableSheet(
          initialChildSize: 0.5,
          minChildSize: 0.2,
          maxChildSize: 0.8,
          builder: (context, scrollController) {
            return Container(
              color: Colors.grey,
              child: ListView.builder(
                controller: scrollController,
                itemCount: 10,
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text('Sheet Item $index'),
                  );
                },
              ),
            );
          },
        ),
      ],
    ),
  );
}

在上面的示例中,我们创建了一个DraggableScrollableSheet,其中包含一个ListView作为面板的内容。我们使用一个ScrollController来监听面板的滚动位置,并根据滚动位置的变化来更新_isExpanded变量的值。当面板完全折叠时,_isExpanded为true,当面板完全展开时,_isExpanded为false。

通过这种方式,我们可以根据_isExpanded变量的值来知道DraggableScrollableSheet是折叠的还是展开的,并根据需要执行相应的操作。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tbc
  • 腾讯云元宇宙服务(Tencent Metaverse):https://cloud.tencent.com/product/tencent-metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发实现文本折叠点击展开功能示例

本文实例讲述了Android开发实现文本折叠点击展开功能。分享给大家供大家参考,具体如下: 信息栏,景点介绍,购物信息,进场会使用到文本折叠方法 实现非常简单,这里就不哆嗦了 效果如下: ?...Demo:https://github.com/LonglyWolf/NavigationSystemHLJU 这里用到了三方类库,在app/gradle添加依赖如下: //文本过长 点击展开全部 implementation...'com.ms-square:expandableTextView:0.1.4' 上面的实例通过adapter就和listView实现,这里就不搞那么复杂,直接看折叠文本方法实现: 首先是主活动...qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"); } 重点在于布局文件设置

3.3K30

你应该知道折叠屏手机适配

折叠屏虽距离普及可能还有很长一段路,大多数公司还未将折叠屏列入适配范围,但是提前研究下折叠适配还是极好折叠屏手机概况 华为Mate X ?...微软 Surfaceduo 最近新出,实际双屏手机,暂无详细资料 ? 从目前推出这几款折叠手机可以看出:折叠手机从折叠展开,屏幕变化类似于 iphone 到 ipad。 ?...折叠屏适配本质 当老板下令说:“我们产品要适配折叠屏”,不同的人会有不同反应: 产品和设计 如何更好利用空间? 如何展示才不会使页面显得空洞? 展开折叠时分别怎么展示? 展开如何过渡?...这表示适配起点,先按手机做然后适配台式机?还是先按台式机做然后适配手机? 使用哪种根据实际情况决定,无所谓好坏,对于折叠屏适配来说肯定是手机优先。 8.web字体vs系统字体 ?...目前来说”折“这个事件虽然没有,然要识别用户有有做折叠展开动作,可以通过监听resize事件来代替。

2K10

【答疑释惑】如何知道电脑32位还是64位

之前在群里问为什么我eclipe无法运行,其实就是他系统32位,但是却下载了64位eclipse。...我们还知道,64位系统如果安装64位软件,相比使用32位版本,一般情况下运行速度,效率上会高些。...所以,我们在平时安装软件过程中如果自己系统64位,那么就尽量安装对应64位版本软件,如果没有对应64位版本软件,那么我们才应该安装32位软件。...如果64位系统却都使用32位软件,那么64位优势也根本发挥不出来。 那么如何知道自己系统64位还是32位呢?这里有几种办法: 使用systeminfo命令查看。...这样以后就不会迷糊,不知道运行系统到底64位还是32位了吧。

92030

iOS支持展开折叠弹出菜单(水平方向弹出菜单视图)

2.水平方向弹出菜单视图应用场景: 2.1、门店商品支持功能:向右横向展开视图(操作:下/上架、打印、编辑、同步网络)支持再次折叠隐藏视图 ?...2.2、网店商品目前只包含下架功能:展开折叠视图:(包含上/下架商品功能) ? 竖向弹出菜单视图 弹出菜单:会员模块右上角下拉菜单(竖向) ?...I、 支持展开折叠弹出菜单实现思路 1.1将弹出视图添加到keyWindow,蒙版也添加到主窗口(主要原因点击屏幕空白处,需要隐藏弹出视图) #define kWindow [UIApplication...,进行判断展开还是隐藏 [self.viewModel.expandMenuSubject subscribeNext:^(id _Nullable x) { [weakSelf...expandMenu:x]; }]; 判断展开弹出菜单,还是折叠 #pragma mark - ******** 判断展开弹出菜单,还是折叠 - (void)expandMenu

2.3K10

知道CountDownLatch做什么,那你知道底层如何实现吗?

一、概述CountDownLatch一个多线程控制工具,用来控制线程等待。...值合法值,那么则通过setState(count)方法,将count赋值给AQS中state变量。...图片三、await()方法源码解析从上面的演示示例中,我们已经看到,通过在主线程中调用countDownLatch.await()方法,使得主线程进入阻塞状态,那么其内部如何实现呢?...== -1】则直接返回true;【如果节点waitStatus > 0】说明CANCELLED节点,那么清理该节点及所有相邻前置CANCELLED节点,并返回false;【如果节点waitStatus...倒计时就已经结束了,则此时直接返回false;如果倒计没有结束,则继续往下执行,先将倒计时总数减1,如果等于0,则说明本次调用countDown()方法倒计时最后一次,那么应该可以触发后续解除主线程阻塞操作了

15120

知道CountDownLatch做什么,那你知道底层如何实现吗?

一、概述 CountDownLatch一个多线程控制工具,用来控制线程等待。...值合法值,那么则通过setState(count)方法,将count赋值给AQS中state变量。...三、await()方法源码解析 从上面的演示示例中,我们已经看到,通过在主线程中调用countDownLatch.await()方法,使得主线程进入阻塞状态,那么其内部如何实现呢?...== -1】则直接返回true; 【如果节点waitStatus > 0】说明CANCELLED节点,那么清理该节点及所有相邻前置CANCELLED节点,并返回false; 【如果节点waitStatus...,则此时直接返回false; 如果倒计没有结束,则继续往下执行,先将倒计时总数减1,如果等于0,则说明本次调用countDown()方法倒计时最后一次,那么应该可以触发后续解除主线程阻塞操作了

13220

知道ping命令如何工作吗?

知道ping命令如何工作吗? 我们用来测试一台机器与另一台机器网络连通性一般会使用ping命令,那么你知道ping命令如何工作吗?ping命令基于ICMP协议工作。...如果差错报文,那么数据部分由两个16位unused部分和IP头、8字节正文组成。 ICMP报文分类大家可以看华为文档,我这里不在叙述:什么ICMP?ICMP如何工作?...如果你搞过装修,你应该知道建材店之间组成销售联盟,联盟派出去两拨人,一批跑业务,一批做广告,都穿着同样广告衫,需要一个标识区分这两批人。...在选项数据中,ping 还会存放发送请求时间值,来计算往返时间,说明路程长短。 五、差错报文 根据什么ICMP?ICMP如何工作?...参考文献: [1] 趣谈网络协议 (geekbang.org) [2] 什么ICMP?ICMP如何工作? - 华为 (huawei.com)

33630

知道Thread线程如何运作吗?

那么start()背后究竟隐藏着什么样不可告人秘密呢?人性扭曲?还是道德沦丧?让我们一起点进start()。探寻start()背后秘密。...就是说,当前进程中所有线程都共享这一个ThreadLocal。那么,Looper.prepare()既然个静态方法,Looper如何确定现在应该和哪一个线程建立绑定关系呢?...平时我们都使用new Handler()来在一个线程中创建Handler实例,但是它是如何知道自己应该处理那个线程任务呢。下面就一起扒一扒Handler。...现在又产生一个疑问,MessageQueuenext()方法如何阻塞住线程呢?接下来,扒一扒这个幕后黑手MessageQueue。...这就是为什么Looper.loop()会在queue.next()处等待原因。 那么,一条Message如何添加到MessageQueue中呢?

53820

知道.c如何变成.exe

程序执行环境 前言 今天我们要来探究内容一个或者多个源文件(.c)如何变成一个可执行程序(.exe),博主将在Linux环境gcc编译器中进行分步演示,让你深入理解程序环境。...请看下图例子: 相信大家都知道这两个源文件组合运行起来能得出正确答案,那么它到底生成了几个.obj目标文件和.exe可执行程序呢?下面我们一起来观察一下目录。...,但可能由于其他原因我们观察到可能不是完全一致,这里我们就不刨根挖底了,我们只需知道test.i里面的这些内容确实就是stdio.h中就行了。...由此我们得出结论:实际编译器不关心注释,所以在预处理阶段要被删除;注释只是写给程序员或者其他人员看,并不参与到程序运算当中。...那么回到上面那个问题,你知道为什么stdio.h文件代码行数比test.i中代码数要多了吗 综上: 预处理过程实质上处理“#”,将#include包含头文件直接拷贝到.i文件当中; 将代码中没用注释部分删除

90320

如何判断一个图稀疏还是稠密

如何判断一个图稀疏还是稠密     最近涉及了一些图算法,发现用途蛮广,比如:物流配送,中文分词,甚至课程排列都可以用图来表示和计算。...无论哪种用途选择一个合适图数据结构至关重要。     图有两种主要表示方法:邻接矩阵和邻接表。     决定我们采用邻接矩阵还是采用邻接表来表示图,需要判断一个图稀疏图还是稠密图。...邻接矩阵和邻接表表示图所需存贮空间和算法时间度相差非常大,所以判断一个图稀疏还是稠密非常重要。    ...判断标准如下:     假设一个图G=(V,E)有n个节点,图G每个节点出度一个固定常数:k。由于E=kV=O(V) ,所以我们把符合E=O(V) 条件图称为稀疏图。    ...比如:一个图节点为16,节点出度为4,那么f = 0.25。     据说:邻接表表示图标准方法,原因稠密图在实际应用中并不多见。

5K50

如何识别文章ChatGPT AI写还是人写

可见未来,公众号、知乎等各种媒体上将会充斥着AI写文章。那么如何识别文章ChatGPT(或者其它AI)写还是仁写?以下一些体验。 1....市面上很多人工写文章其实也带有这种特质,比如《数据分析如何落地》《如何快速搭建指标体系》《销售管理这样做》,在AI加持下,未来此类文章将会更多。 4....规律 ---- 我问了ChatGPT一个问题:服装店如何布置陈列可以提升成交率?...比如我最近在关注RFID,AI可能知道很多RFID知识,但是他不知道我体验了某零售商RFID收银服务,不知道个人感受如何,有什么样想法。而这种结合个人经历文章有着AI无法做到深刻。...(目前)AI不生产新知识。 以上我区分人工文章和AI文章一点体悟,当然,只要文章对你有用,改变了你行为,是不是人写也不是那么重要。

2.8K30

BUG前端还是后端

再往高阶测试路上,就是要对发现bug进行快速反馈和修复回归校验。今天分享就是如何高效反馈。 首先高效反馈结果能够加快bug修复速度,从而高质高效完成本次测试任务。...当你发现一个页面数据展现为空时,你及时查看查询数据接口,如何发现数据返回为空,那么说明后端问题可能性大直接反馈给后端研发,如果数据返回正常,那么提交给前端,让前端辅助排查。...更厉害测试,既能发现根因,同时又给出了解决方案。这样测试往往研发很愿意合作。 前后端BUG都有什么特点呢?...; 对于后端接口返回控制前端交互场景,只需要按照接口文档,排查接口返回数据data相应字段值来明确是后端没给交互字段和正确字段值,还是后端接口已给双方约定数据,只是前端没有正确处理交互。...如果接口数据问题,首先定位存储层是否有接口所需数据,写接口要判断当前存储里面是否插入数据,如果没有插入数据就通过代码断点判断哪里阻塞hang住了;如果读接口,必要codereview可以定位数据源第三方服务还是自身存储层

83020

Github带来不止开源,还有折叠认知

▲截图来自于招聘网站 在这些眼花缭乱、层出不穷、天花乱坠技术、框架给我们带来便利背后,其实隐藏着一个“被折叠技术世界。 “折叠社会发展底层逻辑 “折叠含义大家都知道。...不管火车票、演唱会门票还是什么票,你从网上下载了一个自动抢票工具,其实里面除了“折叠”了自动抢票,可能还“折叠” 了数据自动上传到作者服务器功能。...这些“被折叠东西如果你不清楚,那你就像是那只捡了芝麻丢了西瓜小猴子。 三个破局办法 即然“折叠对复杂性封装,那么应对它方式自然往“展开思路来走。...但是我见过了太多程序员,遇到问题只会百度。 先不论被广为吐槽百度内容质量如何,就这单一信息获取方式实在对不起程序员这个岗位应有的价值。...对每个人来说,面对被高度折叠社会,我们大致分布在四个阶段中,逐步前进。 第一个阶段,完全不知道自己所处一个“折叠”后环境。

46420

iOS支持展开折叠弹出菜单(水平方向弹出菜单视图) 【修订版】

,请关注公众号:iOS逆向 1.支持展开折叠弹出菜单实现思路: 1.1将弹出视图添加到keyWindow,蒙版也添加到主窗口(主要原因点击屏幕空白处,需要隐藏弹出视图) 1.2展示时候,动画从右上角往左下脚延伸...I、 支持展开折叠弹出菜单实现思路 1.1将弹出视图添加到keyWindow,蒙版也添加到主窗口(主要原因点击屏幕空白处,需要隐藏弹出视图) #define kWindow [UIApplication...,进行判断展开还是隐藏 [self.viewModel.expandMenuSubject subscribeNext:^(id _Nullable x) { [weakSelf...expandMenu:x]; }]; 判断展开弹出菜单,还是折叠 #pragma mark - ******** 判断展开弹出菜单,还是折叠 - (void)expandMenu...2.水平方向弹出菜单视图应用场景: 2.1、门店商品支持功能: 向右横向展开视图(操作:下/上架、打印、编辑、同步网络)支持再次折叠隐藏视图 ?

1.9K30

知道 Java 类如何被加载吗?

不过贸然向别人解释双亲委派模型不妥,如果在不了解 JVM 类加载机制情况下,又如何能很好理解“不同 ClassLoader 加载互相隔离”这句话呢?...所以为了理解双亲委派,最好方式,就是先了解下 ClassLoader 加载流程。 Java 类如何被加载 2.1:何时加载类 我们首先要清楚,Java 类何时会被加载?...虚拟机启动时会先加载设置程序主类。 使用 JDK 1.7 动态语言支持时候。 其实要我说,最通俗易懂答案就是:当运行过程中需要这个类时候。 那么我们不妨就从如何加载类开始说起。...2.2:怎么加载类 利用 ClassLoader 加载类很简单,直接调用 ClassLoder loadClass()方法即可,我相信大家都会,但是还是要举个例子: public class Test...,要知道,这个大小在Class 文件编译后就被确定了。

1.1K20

知道Spring中BeanFactoryPostProcessors如何执行吗?

那么我们看一下Spring如何去回调BeanFactoryPostProcessors呢?...,第一个集合就存放我们手动提供给Spring后置处理器,注意这个手动,他并不是由Spring扫描得到,而是我们自己设置进去,当然这里后话!...BeanDefinitionRegistryPostProcessor类型,举个例子就像俄罗斯套娃一样,每一个里面都会进行一些注册,谁也不知道会进行套多少层,故而要进行一个死循环,只要有,就一直遍历寻找...通过上述,我们知道了一件事,只有PriorityOrdered类型BeanFactoryPostProcessor被实例化了,然后放置到了集合中去!...对象确实为Null不知道为什么 事实上它并不会进入到这里 //这个扫描用户自己手动添加一些BeanFactoryPostProcessors //事实上 我们很少会对这里进行更改

90520
领券