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

【Flutter 专题】130 图解 DraggableScrollableSheet 可手势滑动的菜单栏

和尚发现在长期未登陆小米应用市场时,再次登陆会有可滑动的半屏底部菜单,供用户方便下载和推广;而在 Flutter 中这个半屏底部菜单并不是一个简单的 BottomSheet 完成的,可以通过 DraggableScrollableSheet...根据手势操作滑动固定位的菜单栏完成;和尚简单学习一下; ?...构造器作为必选字段,用于在 DraggableScrollableSheet 中显示可滑动的子内容;其中返回内容需为可滑动的 ScrollableWidget,例如 ListView / GridView...4. expand expand 用于是否填充满父 Widget,若 DraggableScrollableSheet 外层固定高度则不影响;若外层未对高度进行固定,expand 作用于是否填充满父...小扩展 之前在分析 DraggableScrollableSheet 时其源码采用了 FractionallySizedBox 比例容器,和尚简单了解一下,其源码非常简单,通过设置 heightFactor

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发笔记(一百三十四)协调布局CoordinatorLayout

    FloatingActionButton FloatingActionButton是design库提供的一个酷炫按钮,它继承自ImageButton,,除了图像按钮的所有功能之外,还提供了以下的其它功能...方法,显示操作是调用show方法; 3、FloatingActionButton默认会随着Snackbar的出现或消失而动态调整位置,有关Snackbar的说明参见《Android开发笔记(一百二十七)...活用提示窗Toast和Snackbar》; 下面是悬浮按钮自隐藏和显示时的动画效果截图: ?...下面是悬浮按钮跟随提示条上移和下移的效果截图: ?...setPeekHeight : 设置弹窗的预览高度,即setState取值STATE_COLLAPSED时设定的折叠高度。 setHideable : 设置弹窗是否允许隐藏。

    2.2K30

    Flutter 入门指北之弹窗和提示(干货)

    BottomSheet BottomSheet 看命名就知道是从底部弹出的菜单,展示 BottomSheet 有两种方式,分别是 showBottomSheet 和 showModalBottomSheet...在 ListView 中增加一个 BottomSheet 的按钮,因为 BottomSheet 需要的 context 也不能是 Scaffold 下的 context,所以需要通过 Builder 进行包裹一层...可以看到 showBottomSheet 会充满整个屏幕,然后 fab 会跟随一起到 AppBar 的底部位置,而 showModalBottomSheet 展示的高度不会超过半个屏幕的高度,但是 fab...Dialog 相对于 SnackBar 和 BottomSheet,Dialog 的使用场景相对会更多,在 MaterialDesign 下,Dialog 主要有 3 种:AlertDialog,SimpleDialog...context 不是共享的,如果需要动态修改 dialog 的状态值,需要通过 StatefulBuilder 或者自定义 dialog 继承于 StatefulWidget 来实现 所以解决的方法很明确

    2.3K20

    你知道吗,Flutter内置了10多种show

    showBottomSheet 在最近的Scaffold父组件上展示一个material风格的bottom sheet,位置同Scaffold组件的bottomSheet,如果Scaffold设置了bottomSheet...通常情况下,我们希望直接从底部弹出,showModalBottomSheet提供了直接从底部弹出的功能。...isScrollControlled参数指定是否使用可拖动的可滚动的组件,如果子组件是ListView或者GridView,此参数应该设置为true,设置为true后,最大高度可以占满全屏。...弹出的位置在屏幕的左上角,我们希望弹出的位置在点击按钮的位置,因此需要计算按钮的位置,计算如下: final RenderBox button = context.findRenderObject();...buildActions输入框后面的控件,一般情况下,输入框不为空,显示一个清空按钮,点击清空输入框: @override List buildActions(BuildContext

    1.8K10

    你知道吗,Flutter内置了10多种show

    showBottomSheet 在最近的Scaffold父组件上展示一个material风格的bottom sheet,位置同Scaffold组件的bottomSheet,如果Scaffold设置了bottomSheet...isScrollControlled参数指定是否使用可拖动的可滚动的组件,如果子组件是ListView或者GridView,此参数应该设置为true,设置为true后,最大高度可以占满全屏。...,效果如下: [1240] 弹出的位置在屏幕的左上角,我们希望弹出的位置在点击按钮的位置,因此需要计算按钮的位置,计算如下: final RenderBox button = context.findRenderObject...StatefulWidget组件,否则context代表的就不是按钮组件。...,输入框放生变化时回调此方法,通常返回一个ListView,点击其中一项时,将当前项的内容填充到输入框,用法如下: @override Widget buildSuggestions(BuildContext

    1.9K11

    Flutte部件目录-Material Components 顶

    BottomNavigationBarType.fixed,缺省情况下,当少于四个条目时。...在这种情况下,假定每个项目将具有不同的背景色,并且背景色将与白色形成鲜明对比。...PopupMenuButton 按下时显示菜单并且当菜单因选择项目而被解除时调用onSelected。 ? ButtonBar 按钮的水平排列。 ?...AlertDialog 警报是需要确认的紧急中断,通知用户有关情况。 AlertDialog小部件实现了这个组件。 ? BottomSheet 底部工作表从屏幕底部向上滑动以显示更多内容。...将按钮封装在工具提示窗口小部件中,以便在按下窗口小部件时(或者当用户采取其他适当的操作时)显示标签。 ? DataTable 数据表显示一组原始数据。 它们通常出现在桌面企业产品中。

    9.5K40

    一种更优雅的Flutter Dialog解决方案

    情景复盘:loading库一般封装在网络层,某个页面提交完表单,要跳转页面,提交操作完成,进行页面跳转,loading关闭是在异步回调中进行(onError或者onSuccess),会出现执行了跳转操作时,...bottomSheet; final bool?...本身无法消费触摸事件,又由于IgnorePointer和AbsorbPointer都具有屏蔽子Widget获取触摸事件的作用,这个貌似靠谱,这里试了,可以和背景后面的页面互动!...,这里了解下behavior的几种属性 deferToChild:仅当一个孩子被命中测试击中时,屈服于其孩子的目标才会在其范围内接收事件 opaque:不透明目标可能会受到命中测试的打击,导致它们既在其范围内接收事件...很明显translucent是有希望的,尝试了几次,然后成功实现了想要的效果 注意,这边有几个坑点,提一下 务必使用Listener控件来使用behavior属性,使用GestureDetector中behavior

    3.8K41

    BottomSheetDialog 使用详解,设置圆角、固定高度、默认全屏等

    其实细分来说,是BottomSheet、BottomSheetDialog、BottomSheetDialogFragment 2.BottomSheet 与主界面同层级关系,可以事件触发,如果有设置显示高度的话...拿到的view吗,我们试一下设置这个view的高度行不行 view.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT 看看效果...首先是像默认效果一样,当内容大于等于全屏的时候,会先到达一个高度,即上面效果的高度,然后继续向上滑的话,可以铺满全屏。...虽然不是预想的效果,但是既然还可以向上滑动至全屏,说明我们设置的高度是有效的,只是没有一次性展开而已,还记得前面提到的状态state吗,设置一下试试 behavior.state = BottomSheetBehavior.STATE_EXPANDED...看看效果 可以了,这下是直接就全屏了,但是向下拉的时候发现,并没有一次性收起,而是先停在了全屏时显示的默认位置,我们再设置高度为全屏试试 behavior.peekHeight = 3000

    4.2K30

    Flutter | 一个超级酷炫的登录页是怎样炼成的

    4.点击 「Accepter」按钮会变色缩小回弹并展示 ok图标5.点击「Accepter」按钮时 Dialog 内其他文字都被「白色遮罩」6....点击「注册」弹出 Dialog 在这里我们需要注意的有一点: 在我们使用 showModalBottomSheet 时,默认的背景是白色的,也就是说我们自己设置的圆角是不管用的, 所以要给这个 BottomSheet...点击按钮的时候会变色 该功能不用考虑太多,既然有点击手势,那必然会使用 GestureDetector, 然后使用 GestureDetector 的 onTapDown 参数,该参数是在「点击按下」时回调...然后处理抬起时的逻辑,在抬起时也有两个逻辑: 1.按钮会缩小成圆形2.缩小成圆形的时候会弹出 ok 图标 首先说一下第一点: 缩小成圆形的时候是有一个回弹效果的,所以不能使用 AnimatedContainer...2.Tween 这里的值是整个高度的倍数,所以不要以为是像素值。

    2.1K20

    Flutter | 一个超级酷炫的登录页是怎样炼成的

    点击「注册」弹出 Dialog 在这里我们需要注意的有一点: 在我们使用 showModalBottomSheet 时,默认的背景是白色的,也就是说我们自己设置的圆角是不管用的, 所以要给这个 BottomSheet...首先我们也是把这个功能点拆分一下: 点击按钮的时候会变色 点击后会变回原来的颜色并缩小成一个圆形 变成圆形后动画效果展示 ok 图标 也还是一步一步来。 1....点击按钮的时候会变色 该功能不用考虑太多,既然有点击手势,那必然会使用 GestureDetector, 然后使用 GestureDetector 的 onTapDown 参数,该参数是在「点击按下」时回调...然后处理抬起时的逻辑,在抬起时也有两个逻辑: 按钮会缩小成圆形 缩小成圆形的时候会弹出 ok 图标 首先说一下第一点: 缩小成圆形的时候是有一个回弹效果的,所以不能使用 AnimatedContainer...Tween 这里的值是整个高度的倍数,所以不要以为是像素值。

    39810

    Flutter第4天--基础控件(下)+Flex布局详解

    --BoxFit 也许你为了查看模式,改一次,看一次,千万不要这样,即费时间,比较的效果又差 你需要学会用数组或map去动态生成,让变化去应对变化,才能以不变应万变。...当你遇到很多种情况的问题时,都可以用这个套路,多分析,你才能巩固自己的知识库 ?...图片的颜色混合模式.png 重复模式,脑子想想也就知道了,这里就不演示了 ---- 1.4:使用Image的方法加载图片 这个等到文件读取再提一下,基本字段和Image是一样的,所以不用担心。...splashColor: Colors.blue,//点击时一闪而过的颜色 disabledColor: Colors.blueGrey, ); ---- 3.ButtonBar 3.1源码一览...,百度了一下,已经有人填坑了, //需要Scaffold的context,而不是我认为的那个context var scContext;//先声明一下Scaffold的context @

    2.2K30

    Flutter 全栈式——页面框架

    ,按钮text等 localeListResolutionCallback LocaleListResolutionCallback 该回调负责在应用启动时以及用户更改设备的区域设置时选择应用的区域设置...showSemanticsDebugger bool 为true时,打开Widget边框,显示布局边界 debugShowCheckedModeBanner bool 为true时,在debug模式下显示右上角的...FloatingActionButtonLocation 设定悬浮按钮的位置 floatingActionButtonAnimator FloatingActionButtonAnimator 悬浮按钮动画...默认为 ThemeData.scaffoldBackgroundColor bottomNavigationBar Widget 显示在底部的导航栏 bottomSheet Widget 底部永久性显示的提示框...flexibleSpace显示在AppBar的下方,高度和AppBar高度一样,可以实现一些特殊的效果 [cf22fa2aav.png] 文档地址 示例 BottomAppBar BottomAppBar

    2.9K30

    【Flutter 专题】20 图解【分享页面】底部对话框

    和尚测试时主要用 GridView 和 BottomSheet 来实现的,当然也可以不用 GridView,和尚简单介绍一下这两组 Widget。 ?...---- GridView GridView 我们都很熟悉了,是日常中最常用到的控件之一,和尚前段时间学习了一下 ListView 的基本用法,GridView 的用法基本相同,和尚不再多说,只提醒一个属性...BottomSheet BottomSheet 和尚理解为是从底部向上弹的工作表,主要分为两种: Persistent 式工作表:类似于一个全新的页面,完全展示 ScaffoldState.showBottomSheet...1.2 若此时设置内容 Widget 宽高,会发现依旧是重新打开一个页面,高度从底向上占据所设置高度,且点击空白区不会消失,如图: ?...2.2 若此时设置内容 Widget 宽高,会发现依旧是打开一个半透明页面,高度从底向上占据所设置高度,且点击空白区会消失,如图: ?

    1.2K71

    听说谷歌Baba更新了 Material UI ...

    脑图呈现文本重点 前期配置 当初LZ前期配置遇了不少坑,这里我们一起回顾下: Step 1:打开工程目录下的build.gradle文件,并添加maven引用 allprojects {    repositories...androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { 本文说明 由于阅读在公众号内,在此LZ简单挑出几个比较有意思的说明一下...这里再次简单描述相关细节: Bottom Sheets具有五种状态: STATE_COLLAPSED: Bottom Sheets是可见的,但只显示可视(部分)高度。...可视高度由开发人员选择,应足以表明有额外的内容,允许用户触发某个动作或扩展Bottom Sheets; STATE_EXPANDED: Bottom Sheets是可见的并且它的最大高度并且不是拖拽或沉降...这将是可视高度,展开高度或0,以防用户操作导致底部表单隐藏; STATE_HIDDEN: Bottom Sheets隐藏。

    3K20
    领券