MyButton class

A highly customizable button widget supporting multiple visual variants.

MyButton provides a unified API for different Material button styles such as filled, elevated, tonal, text, outlined, and danger variants. It supports icons, loading states, full-width layout, and enables easy switching between styles using named constructors.

Example usage:

MyButton(
  label: 'Submit',
  icon: Icons.send,
  onPressed: () {},
)
Inheritance
Available extensions

Constructors

MyButton.new({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a filled MyButton (default Material style).
factory
MyButton.danger({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a filled MyButton with error color for destructive actions.
factory
MyButton.elevated({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates an elevated MyButton with shadow and primary color background.
factory
MyButton.filled({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a filled MyButton with primary color background.
factory
MyButton.outlined({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, double? stroke, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates an outlined MyButton with a border and no fill.
factory
MyButton.outlinedDanger({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, double? stroke, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates an outlined MyButton with error color border for warnings.
factory
MyButton.text({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a text MyButton with no background or border.
factory
MyButton.textDanger({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a text MyButton with error color for warnings.
factory
MyButton.tonal({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a tonal MyButton with a secondary color background.
factory
MyButton.tonalDanger({Key? key, String? label, TextStyle? labelStyle, IconData? icon, Color? iconColor, VoidCallback? onPressed, bool loading = false, bool disabled = false, bool fullWidth = true})
Creates a tonal MyButton with error container color for warnings.
factory

Properties

disabled bool
final
fullWidth bool
final
hashCode int
The hash code for this object.
no setterinherited
height double
final
icon IconData?
final
iconColor Color?
final
iconOnly bool
final
iconWithLabel bool
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
label String?
final
labelOnly bool
final
labelStyle TextStyle?
final
loading bool
final
onPressed VoidCallback?
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
stroke double
final

Methods

align([Alignment alignment = Alignment.center]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in an Align widget with the given alignment.
animatedOpacity({required double opacity, required Duration duration, Curve curve = Curves.linear}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in an AnimatedOpacity for animated opacity changes.
animatedSize({required Duration duration, Curve curve = Curves.linear, AlignmentGeometry alignment = Alignment.center}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in an AnimatedSize for animated size changes.
asSliver() Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a SliverToBoxAdapter for use in a CustomScrollView.
build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
override
center() Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Center widget.
clippedOval({Clip clipBehavior = Clip.antiAlias}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a ClipOval for an oval or circular clip.
clippedRRect({required BorderRadiusGeometry borderRadius, Clip clipBehavior = Clip.antiAlias}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a ClipRRect with the given border radius.
constrained({double minWidth = 0.0, double maxWidth = double.infinity, double minHeight = 0.0, double maxHeight = double.infinity}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a ConstrainedBox to apply constraints.
createElement() StatelessElement
Creates a StatelessElement to manage this widget's location in the tree.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
decorated({required Decoration decoration}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a DecoratedBox with the given decoration.
expand([int flex = 1]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in an Expanded widget with the given flex.
flexible({int flex = 1, FlexFit fit = FlexFit.loose}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Flexible widget with the given flex and fit.
height([double value = double.infinity]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a SizedBox to set its height.
hero({required String tag}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Hero widget for animated transitions.
loadingEffect() Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a MyLoadingEffect widget.
m([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Container with margin on all sides.
mb([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies bottom margin to the widget.
ml([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies left margin to the widget.
mOnly({double l = 0.0, double t = 0.0, double r = 0.0, double b = 0.0}) Widget

Available on Widget, provided by the WidgetExtension extension

Applies margin to specific sides of the widget.
mr([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies right margin to the widget.
mt([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies top margin to the widget.
mx([double x = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies horizontal margin to the widget.
mxy([double x = 16.0, double y = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies horizontal and vertical margin respectively to the widget.
my([double y = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies vertical margin to the widget.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onTap(void onTap()?) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a GestureDetector for tap detection.
opacity([double opacity = 1.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in an Opacity widget.
p([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies padding to all sides of the widget.
pb([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies bottom padding to the widget.
pl([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies left padding to the widget.
pOnly({double l = 0.0, double t = 0.0, double r = 0.0, double b = 0.0}) Widget

Available on Widget, provided by the WidgetExtension extension

Applies padding to specific sides of the widget.
positioned({double? left, double? top, double? right, double? bottom, double? width, double? height}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Positioned widget for use in a Stack.
pr([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies right padding to the widget.
pt([double n = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies top padding to the widget.
px([double x = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies horizontal padding to the widget.
pxy([double x = 16.0, double y = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies horizontal and vertical padding respectively to the widget.
py([double y = 16.0]) Widget

Available on Widget, provided by the WidgetExtension extension

Applies vertical padding to the widget.
rotated({required int quarterTurns}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a RotatedBox to rotate it by a quarter turn.
scrollableX() Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a SingleChildScrollView for horizontal scrolling.
scrollableY() Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a SingleChildScrollView for vertical scrolling.
size([double value = double.infinity]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a SizedBox to set its size (width and height).
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
tooltip(String message) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Tooltip to display a message on long press or hover.
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited
visible([bool visible = true]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a Visibility widget.
width([double value = double.infinity]) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in a SizedBox to set its width.
withAspectRatio({required double aspectRatio}) Widget

Available on Widget, provided by the WidgetExtension extension

Wraps the widget in an AspectRatio widget.

Operators

operator ==(Object other) bool
The equality operator.
inherited