TNumberFieldTheme.defaultTheme constructor

TNumberFieldTheme.defaultTheme(
  1. ColorScheme colors
)

Creates a default theme derived from the context colors.

Implementation

factory TNumberFieldTheme.defaultTheme(ColorScheme colors) {
  final baseTheme = TTextFieldTheme.defaultTheme(colors);
  final increment = 1;
  final decrement = 2;

  Widget decreaseButtonBuilder(onTap, enabled) {
    return TButton(
      type: TButtonType.icon,
      size: TButtonSize.xxs.copyWith(minW: baseTheme.fieldHeight + 3, minH: baseTheme.fieldHeight, icon: baseTheme.fieldFontSize + 3),
      icon: Icons.remove,
      color: colors.onSurfaceVariant,
      onTap: enabled ? onTap : null,
    );
  }

  Widget increaseButtonBuilder(onTap, enabled) {
    return TButton(
      type: TButtonType.icon,
      size: TButtonSize.xxs.copyWith(minW: baseTheme.fieldHeight + 3, minH: baseTheme.fieldHeight, icon: baseTheme.fieldFontSize + 3),
      icon: Icons.add,
      color: colors.onSurfaceVariant,
      onTap: enabled ? onTap : null,
    );
  }

  return TNumberFieldTheme(
    size: baseTheme.size,
    decorationType: baseTheme.decorationType,
    color: baseTheme.color,
    backgroundColor: baseTheme.backgroundColor,
    borderColor: baseTheme.borderColor,
    labelStyle: baseTheme.labelStyle,
    helperTextStyle: baseTheme.helperTextStyle,
    errorTextStyle: baseTheme.errorTextStyle,
    tagStyle: baseTheme.tagStyle,
    decoration: baseTheme.decoration,
    borderRadius: baseTheme.borderRadius,
    borderWidth: baseTheme.borderWidth,
    labelBuilder: baseTheme.labelBuilder,
    helperTextBuilder: baseTheme.helperTextBuilder,
    errorsBuilder: baseTheme.errorsBuilder,
    preWidget: baseTheme.preWidget,
    postWidget: baseTheme.postWidget,
    height: baseTheme.height,
    padding: baseTheme.padding,
    fontSize: baseTheme.fontSize,
    textStyle: baseTheme.textStyle,
    hintStyle: baseTheme.hintStyle,
    increment: increment,
    decrement: decrement,
    decimals: 2,
    increaseButtonBuilder: increaseButtonBuilder,
    decreaseButtonBuilder: decreaseButtonBuilder,
    stepperBuilder: (ctx, onValueChanged, canIncrease, canDecrease) {
      return Row(
        mainAxisSize: MainAxisSize.min,
        children: [
          decreaseButtonBuilder(() => onValueChanged(-decrement), canDecrease),
          increaseButtonBuilder(() => onValueChanged(increment), canIncrease),
        ],
      );
    },
  );
}