# pd_cooldown **Repository Path**: pedro-labs/pd_cooldown ## Basic Information - **Project Name**: pd_cooldown - **Description**: 一个专业的Flutter防抖节流插件,提供完整的防抖(Debounce)和节流(Throttle)解决方案。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-06 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PD Cooldown [中文文档](README_CN.md) | [English Documentation](README.md)
PD Cooldown Logo
一个专业的Flutter防抖节流插件,提供完整的防抖(Debounce)和节流(Throttle)解决方案。

## 特性 - 🚀 **高性能**: 使用同步锁确保线程安全 - 🎯 **易用性**: 简洁的API设计,支持多种使用方式 - 🔧 **可配置**: 支持自定义日志和错误处理 - 🎨 **UI组件**: 内置防抖和节流按钮组件 - 📦 **模块化**: 清晰的代码架构,易于维护和扩展 ## 安装 在 `pubspec.yaml` 中添加依赖: ```yaml dependencies: pd_cooldown: ^0.3.1 ``` 然后运行: ```bash flutter pub get ``` ## 快速开始 ### 1. 导入包 ```dart import 'package:pd_cooldown/pd_cooldown.dart'; ``` ### 2. 基础使用 #### 防抖节流核心功能 ```dart // 创建防抖节流实例 final cooldown = PDCooldown.withDefaults( cooldownDuration: const Duration(seconds: 3), ); // 执行防抖节流操作 final result = await cooldown.execute(() async { // 你的异步操作 await Future.delayed(const Duration(milliseconds: 500)); return '操作完成'; }, onCooldown: (remaining) { print('冷却中,剩余时间: ${remaining.inSeconds}秒'); }); if (result != null) { print('执行结果: $result'); } else { print('操作被冷却限制'); } ``` #### UI组件使用 ```dart // 节流按钮 - 立即响应第一次点击,冷却期间忽略后续点击 PDThrottleButton( buttonType: PDButtonType.elevated, debounceDuration: const Duration(seconds: 2), onPressed: () { print('节流按钮被点击'); }, child: const Text('节流按钮'), ) // 防抖按钮 - 延迟响应,只有在指定时间内没有新点击时才触发 PDDebounceButton( buttonType: PDButtonType.elevated, debounceDuration: const Duration(milliseconds: 800), onPressed: () { print('防抖按钮被点击'); }, child: const Text('防抖按钮'), ) ``` ## 高级用法 ### 自定义日志和错误处理 ```dart final cooldown = PDCooldown.withCallbacks( cooldownDuration: const Duration(seconds: 5), onDebug: (message) => print('调试: $message'), onError: (message) => print('错误: $message'), onErrorHandler: (error, stackTrace, prefix) { // 自定义错误处理逻辑 print('$prefix: $error'); }, ); ``` ### 检查冷却状态 ```dart // 检查是否在冷却中 if (cooldown.isInCooldown()) { final remaining = cooldown.getRemainingCooldown(); print('还需等待 ${remaining.inSeconds} 秒'); } // 重置冷却状态 cooldown.reset(); ``` ## API 文档 ### PDCooldown 核心防抖节流类,提供以下方法: #### 构造函数 - `PDCooldown()` - 基础构造函数 - `PDCooldown.withDefaults()` - 使用默认日志和错误处理 - `PDCooldown.withCallbacks()` - 使用自定义回调 #### 主要方法 - `execute()` - 执行防抖节流操作 - `isInCooldown()` - 检查是否在冷却中 - `getRemainingCooldown()` - 获取剩余冷却时间 - `reset()` - 重置冷却状态 ### UI组件 #### PDThrottleButton 节流按钮组件,主要属性: - `onPressed` - 点击回调 - `child` - 子组件 - `debounceDuration` - 冷却时间 - `buttonType` - 按钮类型 - `cooldownOpacity` - 冷却时透明度 #### PDDebounceButton 防抖按钮组件,主要属性: - `onPressed` - 点击回调 - `child` - 子组件 - `debounceDuration` - 防抖时间 - `buttonType` - 按钮类型 - `debounceOpacity` - 防抖时透明度 ## 示例 查看 `example` 目录获取完整的使用示例。 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 许可证 本项目采用 MIT 许可证。