Skip to content

DievasTextInputThemeData lacks copyWith, per instance overrides, and possibly, if necessary, a warning state #50

Description

@Serticode

DievasTextArea and DievasTextInput share DievasTextInputThemeData for all styling. The theme data class has three significant gaps that prevent brand-level customization:

1. No copyWithEvery constructor parameter is required and there is no copyWith method.

Overriding a single value (e.g. just borderColorFocused) requires reconstructing the entire 19 field object.
This makes it effectively impossible to do partial theme overrides without duplicating the full default values.

2. No per instance stylingDievasTextArea is a StatelessWidget with zero style/decoration parameters: no style, no decoration, no focusBorderColor, nothing.

All styling is locked to the global DievasComponentThemeData.textInput.
There is no way to give one text area a different focus colour than another without creating a separate DievasTheme subtree.

3. (If Necessary )No warning stateThe border colour set supports three states: default (borderColor), focused (borderColorFocused), and error (borderColorError).

There is no borderColorWarning parameter, no warningText parameter (symmetric to errorText), and no warning state in the widget implementation. A warning state (non-blocking validation feedback) is a common input pattern not covered here.

Suggested changes:

  • Add copyWith to DievasTextInputThemeData
  • Add borderColorWarning to DievasTextInputThemeData + InputColours + component mapper
  • Add warningText parameter to DievasTextArea / DievasTextInput (behaves like errorText but uses warning colour)
  • Consider adding direct style/decoration override params to the widget constructors for per instance flexibility

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions