styleFrom static method

ButtonStyle styleFrom({
  1. Color? primary,
  2. Color? onPrimary,
  3. Color? onSurface,
  4. Color? shadowColor,
  5. double? elevation,
  6. TextStyle? textStyle,
  7. EdgeInsetsGeometry? padding,
  8. Size? minimumSize,
  9. Size? fixedSize,
  10. Size? maximumSize,
  11. BorderSide? side,
  12. OutlinedBorder? shape,
  13. MouseCursor? enabledMouseCursor,
  14. MouseCursor? disabledMouseCursor,
  15. VisualDensity? visualDensity,
  16. MaterialTapTargetSize? tapTargetSize,
  17. Duration? animationDuration,
  18. bool? enableFeedback,
  19. AlignmentGeometry? alignment,
  20. InteractiveInkFeatureFactory? splashFactory,
  21. Color? success,
  22. Color? onSuccess,
  23. Color? fail,
  24. Color? onFail,
  25. Color? disable,
  26. Color? onDisable,
})

like ElevatedButton.styleFrom with state color for background success, fail and state color for foreground onSuccess, onFail

Implementation

static ButtonStyle styleFrom({
  Color? primary,
  Color? onPrimary,
  Color? onSurface,
  Color? shadowColor,
  double? elevation,
  TextStyle? textStyle,
  EdgeInsetsGeometry? padding,
  Size? minimumSize,
  Size? fixedSize,
  Size? maximumSize,
  BorderSide? side,
  OutlinedBorder? shape,
  MouseCursor? enabledMouseCursor,
  MouseCursor? disabledMouseCursor,
  VisualDensity? visualDensity,
  MaterialTapTargetSize? tapTargetSize,
  Duration? animationDuration,
  bool? enableFeedback,
  AlignmentGeometry? alignment,
  InteractiveInkFeatureFactory? splashFactory,
  //extend fields
  Color? success,
  Color? onSuccess,
  Color? fail,
  Color? onFail,
  Color? disable,
  Color? onDisable,
}) {
  final style = ElevatedButton.styleFrom(
    primary: primary,
    onPrimary: onPrimary,
    onSurface: onSurface,
    shadowColor: shadowColor,
    elevation: elevation,
    textStyle: textStyle,
    padding: padding,
    minimumSize: minimumSize,
    fixedSize: fixedSize,
    maximumSize: maximumSize,
    side: side,
    shape: shape,
    enabledMouseCursor: enabledMouseCursor,
    disabledMouseCursor: disabledMouseCursor,
    visualDensity: visualDensity,
    tapTargetSize: tapTargetSize,
    animationDuration: animationDuration,
    enableFeedback: enableFeedback,
    alignment: alignment,
    splashFactory: splashFactory,
  );

  final _StateBackground? backgroundColor = (onSurface == null &&
          primary == null &&
          fail == null &&
          success == null)
      ? null
      : _StateBackground(
          primary: primary,
          onSurface: onSurface,
          fail: fail,
          success: success,
          disable: disable,
        );
  final _StateForeground? foregroundColor = (onSurface == null &&
          onPrimary == null &&
          onFail == null &&
          onSuccess == null)
      ? null
      : _StateForeground(
          onPrimary: onPrimary,
          onSurface: onSurface,
          onFail: onFail,
          onSuccess: onSuccess,
          onDisable: onDisable,
        );

  return style.copyWith(
    backgroundColor: backgroundColor,
    foregroundColor: foregroundColor,
  );
}