uiButton method

Widget uiButton({
  1. required void onPressed(),
  2. required String title,
  3. required CButtonType type,
  4. Key? key,
  5. bool enabled = true,
  6. dynamic icon,
  7. ButtonStyle? style,
})

Will construct a stateless button to handle press events of said button. The button is determined via the CButtonType enumeration which will provide the look and feel of the button. The style is handled by that particular buttons theme data object but to set the button individually, utilize the style override. These are stateless buttons so any changing of them is up to the parent.

Implementation

Widget uiButton({
  required void Function() onPressed,
  required String title,
  required CButtonType type,
  Key? key,
  bool enabled = true,
  dynamic icon,
  ButtonStyle? style,
}) {
  assert(
    icon is IconData || icon is Image || icon == null,
    "icon can only be an Image / IconData / null type",
  );

  Widget? btn;
  if (type == CButtonType.elevated) {
    btn = icon != null
        ? ElevatedButton.icon(
            key: key,
            icon: icon is IconData ? Icon(icon) : icon,
            label: Text(title),
            onPressed: enabled ? onPressed : null,
            style: style,
          )
        : ElevatedButton(
            key: key,
            onPressed: enabled ? onPressed : null,
            style: style,
            child: Text(title),
          );
  } else if (type == CButtonType.filled) {
    btn = icon != null
        ? FilledButton.icon(
            key: key,
            icon: icon is IconData ? Icon(icon) : icon,
            label: Text(title),
            onPressed: enabled ? onPressed : null,
            style: style,
          )
        : FilledButton(
            key: key,
            onPressed: enabled ? onPressed : null,
            style: style,
            child: Text(title),
          );
  } else if (type == CButtonType.icon) {
    btn = IconButton(
      key: key,
      icon: icon is IconData ? Icon(icon) : icon,
      tooltip: title,
      onPressed: enabled ? onPressed : null,
      style: style,
    );
  } else if (type == CButtonType.outlined) {
    btn = icon != null
        ? OutlinedButton.icon(
            key: key,
            icon: icon is IconData ? Icon(icon) : icon,
            label: Text(title),
            onPressed: enabled ? onPressed : null,
            style: style,
          )
        : OutlinedButton(
            key: key,
            onPressed: enabled ? onPressed : null,
            style: style,
            child: Text(title),
          );
  } else if (type == CButtonType.text) {
    btn = icon != null
        ? TextButton.icon(
            key: key,
            icon: icon is IconData ? Icon(icon) : icon,
            label: Text(title),
            onPressed: enabled ? onPressed : null,
            style: style,
          )
        : TextButton(
            key: key,
            onPressed: enabled ? onPressed : null,
            style: style,
            child: Text(title),
          );
  }

  return PointerInterceptor(
    key: key,
    intercepting: kIsWeb,
    child: btn!,
  );
}