Flutter 增強版的頁面懸浮按鈕(FloatingActionButton)
theme: v-green highlight:
前言
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,那麼可以在滾動過程中設定visible
為false
;children
:SpeedDialChild
陣列,用於包裹展開後的按鈕。
SpeedDialChild
使用比較簡單,通常是用圖示作為其子元件,也支援新增文字標籤說明按鈕的功能,這裡不再贅述。
我們來看 SpeedDial
的一個實際例子,在 Scaffold
的 floatingActionButton
使用 SpeedDial
替換 FloatingActionButton
,然後就是配置 SpeedDial
的引數和響應方法了,SpeedDial
部分原始碼如下,其中_speedDialDirection
用於控制展開按鈕出現的方向,
dart
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
的使用是非常簡單的,而且提供了非常豐富的個性化配置引數。對於需要點選懸浮按鈕展開更多操作的場景來說,是一個可以直接拿來就用的元件。平時,大家也可以多淘淘這樣的元件,到了用得上的時候就可以省時省力了。
我是島上碼農,微信公眾號同名。如有問題可以加本人微信交流,微訊號:
island-coder
。👍🏻:覺得有收穫請點個贊鼓勵一下!
🌟:收藏文章,方便回看哦!
💬:評論交流,互相進步!
- 屌炸天!國外同行這樣用Chat GPT提高Flutter開發的效率!
- Flutter 增強版的頁面懸浮按鈕(FloatingActionButton)
- 介紹一個令強迫症討厭的小紅點元件
- 我用了幾行程式碼就搞定了介面變灰效果
- 不就是一個空白頁,有必要那麼講究嗎?
- 花裡胡哨的文字特效,你學會了嗎?
- 這一篇讓你搞定 Flutter 的資料表格
- 用 Flutter 輕鬆做個紅包介面
- 沉浸式彈層越來越多,開發該怎麼做好彈層體驗?
- 列表的載入過程很重要的!
- 這個表單打死我也不填!
- 例項講述開發中的圖片使用者體驗要點
- C 位出道按鈕的自我獨白
- Flutter 繪製3D效果動畫
- 封裝一個有趣的 Loading 元件
- 普通的載入千篇一律,有趣的 loading 萬里挑一
- 由點匯聚成字的動效炫極了
- 給滅霸點顏色看看
- 來看光影流動之美
- Flutter 實現背景圖片毛玻璃效果