buttonDynamic method
Button Custom
Implementation
Widget buttonDynamic(BuildContext context) {
ThemeData theme = Theme.of(context);
TextTheme textTheme = theme.textTheme;
ColorScheme colorScheme = theme.colorScheme;
return ElevatedButton(
onPressed: enabled == false
? null
: () {
if (enabled) {
if (onTap != null) {
onTap!();
}
} //else{null;}
},
onLongPress: enabled == false
? null
: () {
if (enabled) {
if (onLongTap != null) {
onLongTap!();
}
} //else{null;}
},
onHover: (bool newVal) {},
style: style == "Rectangle"
? ButtonStyle(
///----------------------------------------------------------------------------
elevation: MaterialStateProperty.all<double>(elevation),
///https://api.flutter.dev/flutter/material/ButtonStyle-class.html
//backgroundColor: MaterialStatePropertyAll<Color>(Colors.green),
backgroundColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return pressColor ?? colorScheme.primary;
} else if (states.contains(MaterialState.hovered)) {
return hoverColor ?? colorScheme.onPrimaryContainer;
} else {
return pressColor != null && selected == true
? pressColor
: backColor != null
? backColor! //.withOpacity(0.9)
: selected == true
? colorScheme.primary
: colorScheme.primaryContainer;
}
},
),
// Elevation
shadowColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
//if (states.contains(MaterialState.pressed)){colorScheme.shadow;} else
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return shadowColor ??
colorScheme.shadow; // Colors.transparent;
}
},
),
// Border
side: MaterialStateProperty.resolveWith<BorderSide?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return BorderSide(
width: 1.5, color: outlineColor ?? colorScheme.outline);
}
},
),
// Color Icon
foregroundColor: MaterialStatePropertyAll<Color?>(
iconColor ?? colorScheme.onPrimary),
/// Color icon
// Color Text
textStyle: MaterialStateProperty.all<TextStyle>(textStyle != null
? textStyle!
.copyWith(color: textColor ?? colorScheme.onPrimary)
: textTheme.bodyMedium!.copyWith(
color: textColor ?? colorScheme.onPrimary,
)),
///----------------------------------------------------------------------------
padding: MaterialStateProperty.all<EdgeInsetsGeometry>(
EdgeInsets.symmetric(
horizontal: paddingH, vertical: paddingV)),
shape: MaterialStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12.0),
//side: const BorderSide(color: Colors.green)
)),
///----------------------------------------------------------------------------
)
: style == "Circle"
? ButtonStyle(
///----------------------------------------------------------------------------
elevation: MaterialStateProperty.all<double>(elevation),
///https://api.flutter.dev/flutter/material/ButtonStyle-class.html
//backgroundColor: MaterialStatePropertyAll<Color>(Colors.green),
backgroundColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return pressColor ?? colorScheme.primary;
} else if (states.contains(MaterialState.hovered)) {
return hoverColor ?? colorScheme.onPrimaryContainer;
} else {
return pressColor != null && selected == true
? pressColor
: backColor != null
? backColor! //.withOpacity(0.9)
: selected == true
? colorScheme.primary
: colorScheme.primaryContainer;
}
},
),
// Elevation
shadowColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
//if (states.contains(MaterialState.pressed)){colorScheme.shadow;} else
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return shadowColor ??
colorScheme.shadow; // Colors.transparent;
}
},
),
// Border
side: MaterialStateProperty.resolveWith<BorderSide?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return BorderSide(
width: 1.5,
color: outlineColor ?? colorScheme.outline);
}
},
),
// Color Icon
foregroundColor: MaterialStatePropertyAll<Color?>(
iconColor ?? colorScheme.onPrimary),
/// Color icon
// Color Text
textStyle: MaterialStateProperty.all<TextStyle>(textStyle !=
null
? textStyle!
.copyWith(color: textColor ?? colorScheme.onPrimary)
: textTheme.bodyMedium!.copyWith(
color: textColor ?? colorScheme.onPrimary,
)),
///----------------------------------------------------------------------------
padding: MaterialStateProperty.all<EdgeInsetsGeometry>(
EdgeInsets.all(paddingH)),
shape: MaterialStateProperty.all<CircleBorder>(
const CircleBorder(),
),
///----------------------------------------------------------------------------
)
: style == "Beveled"
? ButtonStyle(
///----------------------------------------------------------------------------
elevation: MaterialStateProperty.all<double>(elevation),
///https://api.flutter.dev/flutter/material/ButtonStyle-class.html
//backgroundColor: MaterialStatePropertyAll<Color>(Colors.green),
backgroundColor:
MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return pressColor ?? colorScheme.primary;
} else if (states.contains(MaterialState.hovered)) {
return hoverColor ?? colorScheme.onPrimaryContainer;
} else {
return pressColor != null && selected == true
? pressColor
: backColor != null
? backColor! //.withOpacity(0.9)
: selected == true
? colorScheme.primary
: colorScheme.primaryContainer;
}
},
),
// Elevation
shadowColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
//if (states.contains(MaterialState.pressed)){colorScheme.shadow;} else
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return shadowColor ??
colorScheme.shadow; // Colors.transparent;
}
},
),
// Border
side: MaterialStateProperty.resolveWith<BorderSide?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return BorderSide(
width: 1.5,
color: outlineColor ?? colorScheme.outline);
}
},
),
// Color Icon
foregroundColor: MaterialStatePropertyAll<Color?>(
iconColor ?? colorScheme.onPrimary),
/// Color icon
// Color Text
textStyle: MaterialStateProperty.all<TextStyle>(
textStyle != null
? textStyle!.copyWith(
color: textColor ?? colorScheme.onPrimary)
: textTheme.bodyMedium!.copyWith(
color: textColor ?? colorScheme.onPrimary,
)),
///----------------------------------------------------------------------------
padding: MaterialStateProperty.all<EdgeInsetsGeometry>(
EdgeInsets.symmetric(
horizontal: paddingH, vertical: paddingV)),
shape: MaterialStateProperty.all<BeveledRectangleBorder>(
BeveledRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
///----------------------------------------------------------------------------
)
:
/// style == "Stadium" ?
ButtonStyle(
///----------------------------------------------------------------------------
elevation: MaterialStateProperty.all<double>(elevation),
///https://api.flutter.dev/flutter/material/ButtonStyle-class.html
//backgroundColor: MaterialStatePropertyAll<Color>(Colors.green),
backgroundColor:
MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return pressColor ?? colorScheme.primary;
} else if (states.contains(MaterialState.hovered)) {
return hoverColor ?? colorScheme.onPrimaryContainer;
} else {
return pressColor != null && selected == true
? pressColor
: backColor != null
? backColor! //.withOpacity(0.9)
: selected == true
? colorScheme.primary
: colorScheme.primaryContainer;
}
},
),
// Elevation
shadowColor: MaterialStateProperty.resolveWith<Color?>(
(Set<MaterialState> states) {
//if (states.contains(MaterialState.pressed)){colorScheme.shadow;} else
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return shadowColor ??
colorScheme.shadow; // Colors.transparent;
}
},
),
// Border
side: MaterialStateProperty.resolveWith<BorderSide?>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.hovered)) {
return null;
} else {
return BorderSide(
width: 1.5,
color: outlineColor ?? colorScheme.outline);
}
},
),
// Color Icon
foregroundColor: MaterialStatePropertyAll<Color?>(
iconColor ?? colorScheme.onPrimary),
/// Color icon
// Color Text
textStyle: MaterialStateProperty.all<TextStyle>(
textStyle != null
? textStyle!.copyWith(
color: textColor ?? colorScheme.onPrimary)
: textTheme.bodyMedium!.copyWith(
color: textColor ?? colorScheme.onPrimary,
)),
///----------------------------------------------------------------------------
padding: MaterialStateProperty.all<EdgeInsetsGeometry>(
EdgeInsets.symmetric(
horizontal: paddingH, vertical: paddingV)),
shape: MaterialStateProperty.all<StadiumBorder>(
const StadiumBorder(),
),
///----------------------------------------------------------------------------
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
icon ?? const SizedBox.shrink(),
if (icon != null && title != "") const SizedBox(width: 5),
if (title != "")
Flexible(
child: Text(
title!,
style: textStyle != null
? textStyle!
.copyWith(color: textColor ?? colorScheme.onBackground)
: textTheme.bodyMedium!
.copyWith(color: textColor ?? colorScheme.onBackground),
),
),
//if(title != "")Flexible(child: CustomsTextAnimated(
// title: title,
// uuidTitle: styleTitle,
//),),
if (end != null) const SizedBox(width: 5),
if (end != null)
Flexible(
child: end!,
),
],
),
);
}