網站首頁 編程語言 正文
前言
我們通常會用 toast(也叫吐司)來顯示提示信息,例如網絡請求錯誤,校驗錯誤等等。大多數 App的 toast 都很簡單,簡單的半透明黑底加上白色文字草草了事,比如下面這種.
說實話,這種toast 的體驗很糟糕。假設是新手用戶,他們并不知道 toast 從哪里出來,等出現錯誤的時候,閃現出來的時候,可能還沒抓住內容的重點就消失了(尤其是想截屏抓錯誤的時候,更抓狂)。這是因為一個是這種 toast 一般比較小,而是動效非常簡單,用來提醒其實并不是特別好。怎么破?本篇來給大家介紹一個非常有趣的 toast 組件 —— motion_toast。
motion_toast 介紹
從名字就知道,motion_toast 是支持動效的,除此之外,它的顏值還很高,下面是它的一個示例動圖,仔細看那個小鬧鐘圖標,是在跳動的哦。這種提醒效果比起常用的 toast 來說醒目多了,也更有趣味性。
下面我們看看 motion_toast 的特性:
- 可以通過動畫圖標實現動效;
- 內置了成功、警告、錯誤、提醒和刪除類型;
- 支持自定義;
- 支持不同的主題色;
- 支持 null safety;
- 心跳動畫效果;
- 完全自定義的文本內容;
- 內置動畫效果;
- 支持自定義布局(LTR 和 RTL);
- 自定義持續時長;
- 自定義展現位置(居中,底部或頂部);
- 支持長文本顯示;
- 自定義背景樣式;
- 自定義消失形式。
可以看到,除了能夠開箱即用之外,我們還可以通過自定義來豐富 toast 的樣式,使之更有趣。
示例
介紹完了,我們來一些典型的示例吧,首先在 pubspec.yaml 中添加依賴motion_toast: ^2.0.0
(最低Dart版本需要2.12)。
最簡單用法
只需要一行代碼搞定!其他參數在 success 的命名構造方法中默認了,因此使用非常簡單。
MotionToast.success(description: '操作成功!').show(context);
其他內置的提醒
內置的提醒也支持我們修改默認參數進行樣式調整,如標題、位置、寬度、顯示位置、動畫曲線等等。
// 錯誤提示 MotionToast.error( description: '發生錯誤!', width: 300, position: MOTION_TOAST_POSITION.center, ).show(context); //刪除提示 MotionToast.delete( description: '已成功刪除', position: MOTION_TOAST_POSITION.bottom, animationType: ANIMATION.fromLeft, animationCurve: Curves.bounceIn, ).show(context); // 信息提醒(帶標題) MotionToast.info( description: '這是一條提醒,可能會有很多行。toast 會自動調整高度顯示', title: '提醒', titleStyle: TextStyle(fontWeight: FontWeight.bold), position: MOTION_TOAST_POSITION.bottom, animationType: ANIMATION.fromBottom, animationCurve: Curves.linear, dismissable: true, ).show(context);
不過需要注意的是,一個是 dismissable
參數只對顯示位置在底部的有用,當在底部且dismissable
為 true
時,點擊空白處可以讓 toast 提前消失。另外就是顯示位置 position
和 animationType
是存在某些互斥關系的。從源碼可以看到底部顯示的時候,animationType
不能是 fromTop
,頂部顯示的時候 animationType
不能是 fromBottom
。
void _assertValidValues() { assert( (position == MOTION_TOAST_POSITION.bottom && animationType != ANIMATION.fromTop) || (position == MOTION_TOAST_POSITION.top && animationType != ANIMATION.fromBottom) || (position == MOTION_TOAST_POSITION.center), ); }
自定義 toast
自定義其實就是使用 MotionToast 構建一個實例,其中,description
,icon
和 primaryColor
參數是必傳的。自定義的參數很多,使用的時候建議看一下源碼注釋。
MotionToast( description: '這是自定義 toast', icon: Icons.flag, primaryColor: Colors.blue, secondaryColor: Colors.green[300], descriptionStyle: TextStyle( color: Colors.white, ), position: MOTION_TOAST_POSITION.center, animationType: ANIMATION.fromRight, animationCurve: Curves.easeIn, ).show(context);
下面對自定義的一些參數做一下解釋:
-
icon
:圖標,IconData 類,可以使用系統字體圖標; -
primaryColor
:主顏色,也就是大的背景底色; -
secondaryColor
:輔助色,也就是圖標和旁邊的豎條的顏色; -
descriptionStyle
:toast 文字的字體樣式; -
title
:標題文字; -
titleStyle
:標題文字樣式; -
toastDuration
:顯示時長; -
backgroundType
:背景類型,枚舉值,共三個可選值,transparent
,solid
和lighter
,默認是lighter
。lighter
其實就是加了一層白色底色,然后再將原先的背景色(主色調)加上一定的透明度疊加到上面,所以看起來會泛白。 -
onClose
:關閉時回調,可以用于出現多個錯誤時依次展示,或者是關閉后觸發某些動作,如返回上一頁。
總結
看完之后,是不是覺得以前的 toast 太丑了?用 motion_toast來一個更有趣的吧。另外,整個 motion_toast 的源碼并不多,有興趣的可以讀讀源碼,了解一下toast 的實現也是不錯的。
原文鏈接:https://juejin.cn/post/7042301322376265742
相關推薦
- 2022-05-09 使用Docker鏡像構建Go應用的實現方法_docker
- 2022-11-23 詳解Stack?Navigator中使用自定義的Render?Callback_React
- 2022-10-27 kotlin?協程上下文異常處理詳解_Android
- 2022-11-19 Android權限詢問的實例詳解_Android
- 2022-10-01 詳解React?Fiber架構原理_React
- 2022-07-18 使用d2l包和相關環境配置的一些血淚心得
- 2022-07-31 oracle定時任務定時無效的原因分析與解決_oracle
- 2022-03-15 React?Router?V6更新內容詳解_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支