async_button_hook library

Classes

AsyncButton
A builder that wraps a button providing disabled, loading, success and error states while retaining almost full access to the original Button's API. This is useful for any long running operations and helps better improve UX.
ButtonState
This union class represents the state of the button in either a Idling, Loading, Success or Error state. This can be considered a enum with extra utilities for ease of use.
Error
Idle
Loading
Success

Functions

useAsyncButton({required Widget child, required AsyncCallback? onPressed, Widget? loadingWidget, Widget? successWidget, Widget? errorWidget, bool showSuccess = true, bool showError = true, EdgeInsets? errorPadding, EdgeInsets? successPadding, ButtonState buttonState = const ButtonState.idle(), Duration duration = const Duration(milliseconds: 250), Duration reverseDuration = const Duration(milliseconds: 250), bool disabled = false, Duration successDuration = const Duration(seconds: 1), Duration errorDuration = const Duration(seconds: 1), AnimatedSwitcherTransitionBuilder loadingTransitionBuilder = AnimatedSwitcher.defaultTransitionBuilder, AnimatedSwitcherTransitionBuilder idleTransitionBuilder = AnimatedSwitcher.defaultTransitionBuilder, AnimatedSwitcherTransitionBuilder successTransitionBuilder = AnimatedSwitcher.defaultTransitionBuilder, AnimatedSwitcherTransitionBuilder errorTransitionBuilder = AnimatedSwitcher.defaultTransitionBuilder, Curve idleSwitchInCurve = Curves.linear, Curve loadingSwitchInCurve = Curves.linear, Curve successSwitchInCurve = Curves.linear, Curve errorSwitchInCurve = Curves.linear, Curve idleSwitchOutCurve = Curves.linear, Curve loadingSwitchOutCurve = Curves.linear, Curve successSwitchOutCurve = Curves.linear, Curve errorSwitchOutCurve = Curves.linear, Curve sizeCurve = Curves.linear, Clip sizeClipBehavior = Clip.hardEdge, Alignment sizeAlignment = Alignment.center, bool animateSize = true}) → AsyncButtonResult
A button that can be used to perform an asynchronous operation.

Typedefs

AsyncButtonBuilderCallback = Widget Function(BuildContext context, Widget child, AsyncCallback? callback, ButtonState buttonState)