TappableActionConfig class
Configuration for TappableAction behavior
- Annotations
Constructors
- TappableActionConfig({bool requireNetwork = true, bool debounceTaps = true, Duration? coolDownDuration, Duration? delayBeforeFirstTapDuration, bool disableVisuallyDuringFirstDelay = true, Duration? minDisabledDuration, String? groupId, bool disableVisuallyDuringDebouncing = true, TapExecutionMode executionMode = TapExecutionMode.throttle, bool executeOnLeadingEdge = true, bool executeOnTrailingEdge = false, TapConcurrencyMode concurrencyMode = TapConcurrencyMode.drop, int rateLimitMaxTokens = 10, Duration rateLimitRefillInterval = const Duration(seconds: 1), int rateLimitTokensPerRefill = 5, void onMetrics(TapMetrics)?, bool enabled = true, Duration? maxDuration, String? debugName})
-
const
- TappableActionConfig.critical({bool requireNetwork = true, bool debounceTaps = true, Duration? coolDownDuration = const Duration(seconds: 2), Duration? delayBeforeFirstTapDuration = const Duration(milliseconds: 300), bool disableVisuallyDuringFirstDelay = true, Duration? minDisabledDuration = const Duration(seconds: 1), String? groupId, bool disableVisuallyDuringDebouncing = true, TapExecutionMode executionMode = TapExecutionMode.throttle, bool executeOnLeadingEdge = true, bool executeOnTrailingEdge = false, TapConcurrencyMode concurrencyMode = TapConcurrencyMode.drop, int rateLimitMaxTokens = 10, Duration rateLimitRefillInterval = const Duration(seconds: 1), int rateLimitTokensPerRefill = 5, void onMetrics(TapMetrics)?, bool enabled = true, Duration? maxDuration, String? debugName})
-
Conservative configuration for critical actions (payments, deletions, etc.).
const
- TappableActionConfig.highFrequency({bool requireNetwork = false, bool debounceTaps = true, Duration? coolDownDuration = const Duration(milliseconds: 100), Duration? delayBeforeFirstTapDuration, bool disableVisuallyDuringFirstDelay = false, Duration? minDisabledDuration = const Duration(milliseconds: 50), String? groupId, bool disableVisuallyDuringDebouncing = false, TapExecutionMode executionMode = TapExecutionMode.highFrequency, bool executeOnLeadingEdge = true, bool executeOnTrailingEdge = false, TapConcurrencyMode concurrencyMode = TapConcurrencyMode.drop, int rateLimitMaxTokens = 10, Duration rateLimitRefillInterval = const Duration(seconds: 1), int rateLimitTokensPerRefill = 5, void onMetrics(TapMetrics)?, bool enabled = true, Duration? maxDuration, String? debugName})
-
Optimized configuration for high-frequency interactions.
const
- TappableActionConfig.search({bool requireNetwork = true, bool debounceTaps = true, Duration? coolDownDuration = const Duration(milliseconds: 300), Duration? delayBeforeFirstTapDuration, bool disableVisuallyDuringFirstDelay = true, Duration? minDisabledDuration, String? groupId, bool disableVisuallyDuringDebouncing = false, TapExecutionMode executionMode = TapExecutionMode.debounce, bool executeOnLeadingEdge = false, bool executeOnTrailingEdge = true, TapConcurrencyMode concurrencyMode = TapConcurrencyMode.drop, int rateLimitMaxTokens = 10, Duration rateLimitRefillInterval = const Duration(seconds: 1), int rateLimitTokensPerRefill = 5, void onMetrics(TapMetrics)?, bool enabled = true, Duration? maxDuration, String? debugName})
-
For search inputs - debounce with trailing edge.
const
- TappableActionConfig.slider({bool requireNetwork = false, bool debounceTaps = true, Duration? coolDownDuration, Duration? delayBeforeFirstTapDuration, bool disableVisuallyDuringFirstDelay = false, Duration? minDisabledDuration, String? groupId, bool disableVisuallyDuringDebouncing = false, TapExecutionMode executionMode = TapExecutionMode.rateLimited, bool executeOnLeadingEdge = true, bool executeOnTrailingEdge = false, TapConcurrencyMode concurrencyMode = TapConcurrencyMode.drop, int rateLimitMaxTokens = 20, Duration rateLimitRefillInterval = const Duration(milliseconds: 100), int rateLimitTokensPerRefill = 5, void onMetrics(TapMetrics)?, bool enabled = true, Duration? maxDuration, String? debugName})
-
For sliders/high-frequency - rate limited with burst capacity.
const
- TappableActionConfig.toggle({bool requireNetwork = true, bool debounceTaps = true, Duration? coolDownDuration = const Duration(milliseconds: 500), Duration? delayBeforeFirstTapDuration, bool disableVisuallyDuringFirstDelay = true, Duration? minDisabledDuration, String? groupId, bool disableVisuallyDuringDebouncing = true, TapExecutionMode executionMode = TapExecutionMode.throttle, bool executeOnLeadingEdge = true, bool executeOnTrailingEdge = false, TapConcurrencyMode concurrencyMode = TapConcurrencyMode.replace, int rateLimitMaxTokens = 10, Duration rateLimitRefillInterval = const Duration(seconds: 1), int rateLimitTokensPerRefill = 5, void onMetrics(TapMetrics)?, bool enabled = true, Duration? maxDuration, String? debugName})
-
For like/favorite buttons - immediate feedback, replace on rapid tap.
const
Properties
- concurrencyMode → TapConcurrencyMode
-
Concurrency control for async handlers.
final
- coolDownDuration → Duration?
-
final
- debounceTaps → bool
-
final
- debugName → String?
-
Debug name for logging/troubleshooting.
final
- delayBeforeFirstTapDuration → Duration?
-
final
- disableVisuallyDuringDebouncing → bool
-
final
- disableVisuallyDuringFirstDelay → bool
-
final
- enabled → bool
-
Enable/disable toggle (bypass all logic when false).
final
- executeOnLeadingEdge → bool
-
Execute immediately on first tap (leading edge).
final
- executeOnTrailingEdge → bool
-
Execute after cooldown/pause period (trailing edge).
final
- executionMode → TapExecutionMode
-
Execution timing mode (throttle, debounce, or rate-limited).
Defaults to throttle for backward compatibility.
final
- groupId → String?
-
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- isValid → bool
-
Validation helper
no setter
- maxDuration → Duration?
-
Maximum duration for async operations (timeout).
final
- minDisabledDuration → Duration?
-
final
- onMetrics → void Function(TapMetrics)?
-
Metrics callback for observability.
final
- rateLimitMaxTokens → int
-
Rate limiter config: maximum tokens in bucket (when executionMode == rateLimited).
final
- rateLimitRefillInterval → Duration
-
Rate limiter config: how often tokens are refilled.
final
- rateLimitTokensPerRefill → int
-
Rate limiter config: tokens added per refill interval.
final
- requireNetwork → bool
-
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
copyWith(
{bool? requireNetwork, bool? debounceTaps, Duration? coolDownDuration, Duration? delayBeforeFirstTapDuration, bool? disableVisuallyDuringFirstDelay, Duration? minDisabledDuration, String? groupId, bool? disableVisuallyDuringDebouncing, TapExecutionMode? executionMode, bool? executeOnLeadingEdge, bool? executeOnTrailingEdge, TapConcurrencyMode? concurrencyMode, int? rateLimitMaxTokens, Duration? rateLimitRefillInterval, int? rateLimitTokensPerRefill, void onMetrics(TapMetrics)?, bool? enabled, Duration? maxDuration, String? debugName}) → TappableActionConfig - Create a copy with modified fields.
-
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