buildButton method

  1. @override
Widget buildButton(
  1. BuildContext context,
  2. TFormBloc formBloc,
  3. FormBlocState<TSuccess, TFailure> state
)

Implementation

@override
Widget buildButton(
  BuildContext context,
  TFormBloc formBloc,
  FormBlocState<TSuccess, TFailure> state,
) {
  final onPressed = canSubmit(state) ? () => submit(formBloc) : null;
  final child = buildLabel(context, state);
  final icon = buildIcon(context, state);

  switch (_type) {
    case _SubmitButtonType.text:
      return icon != null
          ? TextButton.icon(
              onPressed: onPressed,
              onLongPress: onLongPress,
              style: style,
              focusNode: focusNode,
              autofocus: autofocus,
              clipBehavior: clipBehavior,
              icon: icon,
              label: child,
            )
          : TextButton(
              onPressed: onPressed,
              onLongPress: onLongPress,
              style: style,
              focusNode: focusNode,
              autofocus: autofocus,
              clipBehavior: clipBehavior,
              child: child,
            );
    case _SubmitButtonType.elevated:
      return icon != null
          ? ElevatedButton.icon(
              onPressed: onPressed,
              onLongPress: onLongPress,
              style: style,
              focusNode: focusNode,
              autofocus: autofocus,
              clipBehavior: clipBehavior,
              icon: icon,
              label: child,
            )
          : ElevatedButton(
              onPressed: onPressed,
              onLongPress: onLongPress,
              style: style,
              focusNode: focusNode,
              autofocus: autofocus,
              clipBehavior: clipBehavior,
              child: child,
            );
    case _SubmitButtonType.outlined:
      return icon != null
          ? OutlinedButton.icon(
              onPressed: onPressed,
              onLongPress: onLongPress,
              style: style,
              focusNode: focusNode,
              autofocus: autofocus,
              clipBehavior: clipBehavior,
              label: child,
              icon: icon,
            )
          : OutlinedButton(
              onPressed: onPressed,
              onLongPress: onLongPress,
              style: style,
              focusNode: focusNode,
              autofocus: autofocus,
              clipBehavior: clipBehavior,
              child: child,
            );
  }
}