AnimatedStateButton.simple constructor

AnimatedStateButton.simple({
  1. Key? key,
  2. required Future<void> onAction(),
  3. Widget? label,
  4. Color initColor = Colors.black,
  5. double borderRadius = 8,
  6. double height = 48,
  7. double compactSize = 48,
  8. Duration animationDuration = const Duration(milliseconds: 400),
  9. Curve animationCurve = Curves.easeInOut,
  10. Duration switchDuration = const Duration(milliseconds: 300),
  11. Curve switchInCurve = Curves.easeOut,
  12. Curve switchOutCurve = Curves.easeIn,
  13. ButtonStyle? buttonStyle,
  14. bool enabled = true,
  15. double hoverScale = .02,
  16. double pressScale = .04,
  17. double? width,
  18. EdgeInsetsGeometry padding = const EdgeInsets.symmetric(horizontal: 24.0, vertical: 16),
  19. void onStateChanged(
    1. StateId newStateId
    )?,
  20. Duration autoResetDelay = const Duration(milliseconds: 600),
  21. double? elevation,
  22. Color? shadowColor,
})

Factory simple sin armar controller a mano.

Implementation

factory AnimatedStateButton.simple({
  Key? key,
  required Future<void> Function() onAction,
  Widget? label,
  Color initColor = Colors.black,
  double borderRadius = 8,
  double height = 48,
  double compactSize = 48,
  Duration animationDuration = const Duration(milliseconds: 400),
  Curve animationCurve = Curves.easeInOut,
  Duration switchDuration = const Duration(milliseconds: 300),
  Curve switchInCurve = Curves.easeOut,
  Curve switchOutCurve = Curves.easeIn,
  ButtonStyle? buttonStyle,
  bool enabled = true,
  double hoverScale = .02,
  double pressScale = .04,
  double? width,
  EdgeInsetsGeometry padding = const EdgeInsets.symmetric(horizontal: 24.0, vertical: 16),
  void Function(StateId newStateId)? onStateChanged,
  Duration autoResetDelay = const Duration(milliseconds: 600),
  double? elevation,
  Color? shadowColor,
}) {
  final controller = AnimatedStateButtonController(
    states: {
      'success': ButtonState.success(),
      'error': ButtonState.error(),
    },
    onStateChanged: onStateChanged,
    autoResetDelay: autoResetDelay,
  );

  return AnimatedStateButton._internal(
    key: key,
    width: width,
    controller: controller,
    onClick: () => controller.runGuarded(onAction),
    onPressed: () => controller.runGuarded(onAction),
    initChild: label ?? const Text('Enviar', style: TextStyle(color: Colors.white)),
    initColor: initColor,
    borderRadius: borderRadius,
    height: height,
    compactSize: compactSize,
    animationDuration: animationDuration,
    animationCurve: animationCurve,
    switchDuration: switchDuration,
    switchInCurve: switchInCurve,
    switchOutCurve: switchOutCurve,
    buttonStyle: buttonStyle,
    enabled: enabled,
    hoverScale: hoverScale,
    pressScale: pressScale,
    padding: padding,
    elevation: elevation,
    shadowColor: shadowColor,
    ownController: true,
  );
}