buildMaterial method
Builds the Material Design (Android) variant of this widget.
Implementation
@override
Widget buildMaterial(BuildContext context) {
final resolvedMaterialButtonData = MaterialButtonData(
widgetKey: materialButtonData?.widgetKey ?? widgetKey,
onPressed: materialButtonData?.onPressed ?? onPressed!,
onLongPress: materialButtonData?.onLongPress ?? onLongPress,
mouseCursor: materialButtonData?.mouseCursor ?? mouseCursor,
focusNode: materialButtonData?.focusNode ?? focusNode,
autofocus: materialButtonData?.autofocus ?? autofocus ?? kDefaultAutofocus,
child: materialButtonData?.child ?? child,
onHover: materialButtonData?.onHover,
onFocusChange: materialButtonData?.onFocusChange,
style: materialButtonData?.style,
statesController: materialButtonData?.statesController,
isSemanticButton: materialButtonData?.isSemanticButton,
icon: materialButtonData?.icon,
label: materialButtonData?.label,
iconAlignment: materialButtonData?.iconAlignment,
);
assert(
(resolvedMaterialButtonData.child != null) ^ (resolvedMaterialButtonData.icon != null),
'child and icon are mutually exclusive: provide either one.',
);
assert(
(resolvedMaterialButtonData.child != null) ^ (resolvedMaterialButtonData.label != null),
'child and label are mutually exclusive: provide either one.',
);
return switch ((materialButtonVariant, resolvedMaterialButtonData.useNormalConstructor)) {
(.text, true) => TextButton(
key: resolvedMaterialButtonData.widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
isSemanticButton: resolvedMaterialButtonData.isSemanticButton,
child: resolvedMaterialButtonData.child!,
),
(.text, false) => TextButton.icon(
key: widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
label: resolvedMaterialButtonData.label!,
icon: resolvedMaterialButtonData.icon,
iconAlignment: resolvedMaterialButtonData.iconAlignment,
),
(.elevated, true) => ElevatedButton(
key: resolvedMaterialButtonData.widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
child: resolvedMaterialButtonData.child,
),
(.elevated, false) => ElevatedButton.icon(
key: widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
label: resolvedMaterialButtonData.label!,
icon: resolvedMaterialButtonData.icon,
iconAlignment: resolvedMaterialButtonData.iconAlignment,
),
(.outlined, true) => OutlinedButton(
key: resolvedMaterialButtonData.widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
child: resolvedMaterialButtonData.child,
),
(.outlined, false) => OutlinedButton.icon(
key: widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
label: resolvedMaterialButtonData.label!,
icon: resolvedMaterialButtonData.icon,
iconAlignment: resolvedMaterialButtonData.iconAlignment,
),
//TODO(lahaluhem): Add support for .tonal + .tonalIcon
(.filled, true) => FilledButton(
key: resolvedMaterialButtonData.widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
child: resolvedMaterialButtonData.child,
),
(.filled, false) => FilledButton.icon(
key: widgetKey,
onPressed: !isEnabled ? null : resolvedMaterialButtonData.onPressed,
onLongPress: !isEnabled ? null : resolvedMaterialButtonData.onLongPress,
focusNode: resolvedMaterialButtonData.focusNode,
autofocus: resolvedMaterialButtonData.autofocus,
onHover: resolvedMaterialButtonData.onHover,
onFocusChange: resolvedMaterialButtonData.onFocusChange,
style: resolvedMaterialButtonData.style,
clipBehavior: resolvedMaterialButtonData.clipBehavior,
statesController: resolvedMaterialButtonData.statesController,
label: resolvedMaterialButtonData.label!,
icon: resolvedMaterialButtonData.icon,
iconAlignment: resolvedMaterialButtonData.iconAlignment,
),
};
}