Flutter实现增强版的页面悬浮按钮的示例代码

 更新时间:2023年01月31日 08:25:13   作者:岛上码农  
Flutter 自带的 FloatingActionButton 为我们提供了一个悬浮在顶部的按钮,这个按钮始终在最顶层,因此可以做一些快捷的操作。本文就来和大家详细聊聊

前言

Flutter 自带的 FloatingActionButton 为我们提供了一个悬浮在顶部的按钮,这个按钮始终在最顶层,因此可以做一些快捷的操作。比如,滚动列表时点击该按钮回到顶部。然而,如果我们有多个操作需要悬浮在顶部的时候,一个 FloatingActionButton 就不够了。这个时候也不适合将多个按钮同时悬浮在页面顶部,那就需要点开一个 FloatingActionButton 再弹出更多操作来。这个实现还挺复杂的,不过已经有人帮我们搞定了。这就是增强版的 FloatingActionButton —— SpeedDial 组件,组件地址:flutter_speed_dial。下面是SpeedDial组件的官方示例运行效果。

SpeedDial 使用

在使用 FloatignActionButton 的地方就可以直接使用 SpeedDial 替换。所不同的是,SpeedDial 有一个 children 属性,可以添加多个SpeedDialChild组件作为点击 SpeedDial 弹出的更多操作。同时,SpeedDial 还提供了很多个性化的参数。SpeedDial的参数很多,这里不一一列举了,我们挑几个重要的参数说明一下。其他参数大家可以看一下源码, SpeedDial的源码注释得非常好。

  • overlayColor:点击后弹出的蒙层颜色。
  • overlayOpacity:点击后弹出的蒙层透明度。例如,如果要黑色半透明,那么需要将 overlayColor 设置为黑色,然后overlayOpacity设置为0.5。
  • icon:按钮的图标,可以用 icon 来设置图标按钮。当然也可以使用child 参数设置自定义的样式。
  • activeIcon:展开后的图标,用来区分当前按钮活跃的状态。
  • buttonSize:按钮的宽高尺寸;
  • childrenButtonSize:展开按钮的宽高尺寸;
  • direction:展开按钮的方向,可以从左侧、右侧、上侧或下侧展开操作按钮;
  • spaceBetweenChildren:展开按钮之间的间距(默认间距外可以额外增加的间距);
  • visible:是否可见,如果滚动时要隐藏 SpeedDial,那么可以在滚动过程中设置 visiblefalse
  • childrenSpeedDialChild数组,用于包裹展开后的按钮。

SpeedDialChild 使用比较简单,通常是用图标作为其子组件,也支持添加文字标签说明按钮的功能,这里不再赘述。

我们来看 SpeedDial 的一个实际例子,在 ScaffoldfloatingActionButton 使用 SpeedDial 替换 FloatingActionButton,然后就是配置 SpeedDial 的参数和响应方法了,SpeedDial 部分源码如下,其中_speedDialDirection用于控制展开按钮出现的方向,

floatingActionButton: SpeedDial(
  overlayColor: Colors.black,
  overlayOpacity: 0.5,
  icon: Icons.rocket,
  elevation: 4.0,
  buttonSize: const Size(44, 44),
  childrenButtonSize: Size(_childButtonSize, _childButtonSize),
  animationAngle: -pi / 4, // 图标的旋转角度,和图标本身的朝向没关系
  activeIcon: Icons.rocket_launch,
  direction: _speedDialDirection,
  spaceBetweenChildren: 4.0,
  spacing: 4.0,
  children: [
    SpeedDialChild(
      child: const Icon(Icons.add),
      backgroundColor: Colors.green,
      foregroundColor: Colors.white,
      onTap: () {},
    ),
    SpeedDialChild(
      child: const Icon(Icons.settings),
      backgroundColor: Colors.orange[300],
      foregroundColor: Colors.white,
      onTap: () {},
    ),
    SpeedDialChild(
      child: const Icon(Icons.person),
      backgroundColor: Colors.purple[300],
      foregroundColor: Colors.white,
      onTap: () {},
    ),
  ],
),

运行效果如下。

总结

可以看到,SpeedDial 的使用是非常简单的,而且提供了非常丰富的个性化配置参数。对于需要点击悬浮按钮展开更多操作的场景来说,是一个可以直接拿来就用的组件。平时,大家也可以多淘淘这样的组件,到了用得上的时候就可以省时省力了。

到此这篇关于Flutter实现增强版的页面悬浮按钮的示例代码的文章就介绍到这了,更多相关Flutter页面悬浮按钮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android 监听应用前/后台切换实例代码

    Android 监听应用前/后台切换实例代码

    本篇文章主要介绍了Android 监听应用前/后台切换实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Android Studio 3.6中使用视图绑定替代 findViewById的方法

    Android Studio 3.6中使用视图绑定替代 findViewById的方法

    从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来,今天通过本文给大家介绍使用视图绑定替代 findViewById的方法,感兴趣的朋友一起看看吧
    2020-03-03
  • Android编程实现拍照功能的2种方法分析

    Android编程实现拍照功能的2种方法分析

    这篇文章主要介绍了Android编程实现拍照功能的2种方法,结合具体实例形式对比分析了Android通过调用系统摄像头及程序调用照相机功能两种实现技巧与相关注意事项,需要的朋友可以参考下
    2017-07-07
  • Android震动与提示音实现代码

    Android震动与提示音实现代码

    这篇文章主要为大家详细介绍了Android震动与提示音实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • android手机获取gps和基站的经纬度地址实现代码

    android手机获取gps和基站的经纬度地址实现代码

    android手机如何获取gps和基站的经纬度地址,疑问,于是网上搜集整理一些,拿出来和大家分享下,希望可以帮助你们
    2012-12-12
  • Android自定义View仿探探卡片滑动效果

    Android自定义View仿探探卡片滑动效果

    这篇文章主要为大家详细介绍了Android自定义View仿探探卡片滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • android APP登陆页面适配的实现

    android APP登陆页面适配的实现

    这篇文章主要介绍了android APP登陆页面适配的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Android AsyncTask使用以及源码解析

    Android AsyncTask使用以及源码解析

    这篇文章主要为大家详细解析了Android AsyncTask使用以及源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 简述Android中SELinux的TE

    简述Android中SELinux的TE

    SELinux使用类型强制来改进强制访问控制。这篇文章给大家介绍了Android中SELinux的TE的相关知识,感兴趣的朋友一起看看吧
    2018-03-03
  • Android实现从相册选择照片功能

    Android实现从相册选择照片功能

    这篇文章主要为大家详细介绍了Android实现从相册选择照片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论