Tools class
工具类 提供一些常用的工具方法
- generateRandomString: 生成指定长度的随机字符串
- debounce: 防抖函数,在指定时间内多次调用只执行最后一次
- throttle: 节流函数,在指定时间内多次调用只执行第一次
- showModalDailog: 显示模态对话框,支持多层级管理和多种动画效果
- closeModalDailog: 关闭指定的模态对话框
弹窗管理使用示例:
// 显示第一个弹窗(默认缩放动画)
await Tools.showModalDailog(
context,
MyDialog1(),
dialogKey: 'dialog1',
);
// 使用相同的dialogKey打开多个弹窗(支持多实例)
await Tools.showModalDailog(
context,
MyDialog1(),
dialogKey: 'dialog1', // 相同的key,会创建新的实例
);
// 显示第二个弹窗(滑动动画)
await Tools.showModalDailog(
context,
MyDialog2(),
dialogKey: 'dialog2',
animationType: DialogAnimationType.slide,
transitionDuration: Duration(milliseconds: 300),
);
// 关闭指定dialogKey的最顶层弹窗(默认只关闭最后一个)
Tools.closeModalDailog(context, 'dialog1');
// 关闭指定dialogKey的所有弹窗
Tools.closeModalDailog(context, 'dialog1', closeAll: true);
// 检查弹窗是否存在
bool exists = Tools.isDialogActive('dialog1');
// 获取指定dialogKey的弹窗实例数量
int instanceCount = Tools.getDialogInstanceCount('dialog1');
// 获取当前活跃弹窗数量(不同dialogKey的数量)
int count = Tools.getActiveDialogCount();
// 关闭所有弹窗
Tools.closeAllDialogs();
// 关闭最顶层弹窗
Tools.closeTopDialog();
Constructors
- Tools()
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Properties
- uiRootContext ↔ BuildContext?
-
getter/setter pair
Static Methods
-
atob(
String base64Str) → String -
将Base64编码的字符串解码为原始字符串
base64StrBase64编码的字符串 @example -
cancelDebounce(
String key, {Duration duration = const Duration(milliseconds: 300)}) → void -
取消指定key的防抖
key防抖的唯一标识duration防抖时间(需要与创建时一致) -
cancelThrottle(
String key, {Duration duration = const Duration(milliseconds: 300)}) → void - 取消指定 key 的节流窗口
-
closeAllDialogs(
{DialogReturnTypeEnum? returnType}) → void - 关闭所有弹窗
-
closeAllFloating(
) → dynamic -
closeDialogsAboveLevel(
int level, {DialogReturnTypeEnum? returnType}) → void -
关闭指定层级及以上的所有弹窗
level层级深度 -
closeFloatingByKey(
String key) → dynamic -
closeModalDailog(
BuildContext rootContext, String dialogKey, {DialogReturnTypeEnum? returnType, bool closeAll = false}) → void -
关闭指定的模态对话框
rootContext上下文dialogKey对话框的唯一keycloseAll是否关闭该dialogKey的所有弹窗,默认为false(只关闭最顶层的) -
closePingDialog(
BuildContext context, String dialogKey) → void -
关闭Ping检测弹窗
context上下文dialogKey弹窗的唯一标识 @example -
closeTopDialog(
{DialogReturnTypeEnum? returnType}) → void - 关闭最顶层的弹窗
-
createFloating(
{required String key, required Widget child, double? top, double? right, double? left, double? bottom, FloatingSlideType? slideType, FloatingAnimationType? animationType}) → Floating - 创建一个浮窗
-
debounce(
Function func, {Duration duration = const Duration(milliseconds: 300)}) → Function -
防抖函数
callback需要执行的函数duration防抖时间 防抖函数func需要防抖的函数duration防抖时间 @example -
debounceWithKey(
String key, Function func, {Duration duration = const Duration(milliseconds: 300)}) → void -
generateRandomString(
int len) → String - 生成16位随机字符串,只包含数字和大小写字母 @param len 要生成的字符串长度 @return 返回指定长度的随机字符串 @example
-
getActiveDialogCount(
) → int - 获取当前活跃的弹窗数量(所有dialogKey的数量)
-
getActiveDialogKeys(
) → List< String> - 获取所有活跃弹窗的key列表
-
getDialogInstanceCount(
String dialogKey) → int -
获取指定dialogKey的弹窗实例数量
dialogKey弹窗的唯一key -
getDialogLevels(
String dialogKey) → List< int> ? -
获取指定弹窗的层级列表
dialogKey弹窗的唯一key -
getFloating(
String key) → Floating? -
getTopDialogLevel(
String dialogKey) → int? -
获取指定弹窗的最顶层层级
dialogKey弹窗的唯一key -
hideAllFloating(
) → dynamic -
isDialogActive(
String dialogKey) → bool -
检查指定弹窗是否存在
dialogKey弹窗的唯一key -
isPlatformAvailable(
int platform) → bool -
判断当前平台是否可用
platform平台类型 @return 是否可用 -
isValidURL(
String url) → bool -
验证URL是否合法
url需要验证的URL @example -
openFloating(
String key) → dynamic -
ping(
String host) → Future< double> -
Ping工具函数
host要ping的主机地址(域名或IP) @return 返回ping的延迟时间,单位毫秒(ms) @example -
retryAsync(
Future< bool> callback(), {int retryTimes = 3, Duration interval = const Duration(seconds: 1)}) → Future<bool> -
每隔N秒重试调用异步函数
callback需要执行的异步函数retryTimes重试次数interval重试间隔时间 @example -
runAfterInit(
Function callback) → void -
确保在initState完成后执行函数
callback需要执行的函数 @example -
showAllFloating(
) → dynamic -
showModalDailog<
T> (BuildContext rootContext, Widget dialog, {bool barrierDismissible = true, bool useSafeArea = true, required String dialogKey, Duration transitionDuration = const Duration(milliseconds: 300), DialogAnimationType animationType = DialogAnimationType.scale, Color barrierColor = Colors.black54, bool isSlideDialog = false, SlideDialogDirection slideDirection = SlideDialogDirection.fromRight}) → Future< T?> -
显示模态对话框
rootContext上下文dialog对话框barrierDismissible是否可以点击背景关闭useSafeArea是否使用安全区域useRootNavigator是否使用根导航器transitionDuration动画时长animationType动画类型isSlideDialog是否是滑动对话框(竖屏从底部滑入,横屏从侧边滑入)slideDirection滑动方向(仅在横屏且isSlideDialog=true时生效) @return 返回对话框的唯一key -
showPingDialog(
BuildContext context, String dialogKey) → Future< void> -
显示Ping检测弹窗
context上下文dialogKey弹窗的唯一标识 @example -
showRightSlideDialog(
BuildContext c, Widget page) → Future -
throttle(
Function callback, {String? key, Duration duration = const Duration(milliseconds: 300)}) → void -
unzip(
List< int> compressedData) → String -
解压缩gzip数据
compressedData压缩后的数据 @example