| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'template.dart'; |
| |
| class InputDecoratorTemplate extends TokenTemplate { |
| const InputDecoratorTemplate(super.blockName, super.fileName, super.tokens, { |
| super.colorSchemePrefix = '_colors.', |
| super.textThemePrefix = '_textTheme.' |
| }); |
| |
| @override |
| String generate() => ''' |
| // Generated version ${tokens["version"]} |
| class _${blockName}DefaultsM3 extends InputDecorationTheme { |
| _${blockName}DefaultsM3(this.context) |
| : super(); |
| |
| final BuildContext context; |
| |
| late final ColorScheme _colors = Theme.of(context).colorScheme; |
| late final TextTheme _textTheme = Theme.of(context).textTheme; |
| |
| @override |
| TextStyle? get hintStyle => MaterialStateTextStyle.resolveWith((Set<MaterialState> states) { |
| if (states.contains(MaterialState.disabled)) { |
| return TextStyle(color: Theme.of(context).disabledColor); |
| } |
| return TextStyle(color: Theme.of(context).hintColor); |
| }); |
| |
| @override |
| Color? get fillColor => MaterialStateColor.resolveWith((Set<MaterialState> states) { |
| if (states.contains(MaterialState.disabled)) { |
| return ${componentColor("md.comp.filled-text-field.disabled.container")}; |
| } |
| return ${componentColor("md.comp.filled-text-field.container")}; |
| }); |
| |
| @override |
| BorderSide? get activeIndicatorBorder => MaterialStateBorderSide.resolveWith((Set<MaterialState> states) { |
| if (states.contains(MaterialState.error)) { |
| if (states.contains(MaterialState.hovered)) { |
| return ${border('md.comp.filled-text-field.error.hover.active-indicator')}; |
| }${border('md.comp.filled-text-field.error.focus.active-indicator') == border('md.comp.filled-text-field.error.active-indicator') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return ${border('md.comp.filled-text-field.error.focus.active-indicator')}; |
| }'''} |
| return ${border('md.comp.filled-text-field.error.active-indicator')}; |
| } |
| if (states.contains(MaterialState.hovered)) { |
| return ${border('md.comp.filled-text-field.hover.active-indicator')}; |
| } |
| if (states.contains(MaterialState.focused)) { |
| return ${border('md.comp.filled-text-field.focus.active-indicator')}; |
| } |
| if (states.contains(MaterialState.disabled)) { |
| return ${border('md.comp.filled-text-field.disabled.active-indicator')}; |
| } |
| return ${border('md.comp.filled-text-field.active-indicator')}; |
| }); |
| |
| @override |
| BorderSide? get outlineBorder => MaterialStateBorderSide.resolveWith((Set<MaterialState> states) { |
| if (states.contains(MaterialState.error)) { |
| if (states.contains(MaterialState.hovered)) { |
| return ${border('md.comp.outlined-text-field.error.hover.outline')}; |
| }${border('md.comp.outlined-text-field.error.focus.outline') == border('md.comp.outlined-text-field.error.outline') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return ${border('md.comp.outlined-text-field.error.focus.outline')}; |
| }'''} |
| return ${border('md.comp.outlined-text-field.error.outline')}; |
| } |
| if (states.contains(MaterialState.hovered)) { |
| return ${border('md.comp.outlined-text-field.hover.outline')}; |
| } |
| if (states.contains(MaterialState.focused)) { |
| return ${border('md.comp.outlined-text-field.focus.outline')}; |
| } |
| if (states.contains(MaterialState.disabled)) { |
| return ${border('md.comp.outlined-text-field.disabled.outline')}; |
| } |
| return ${border('md.comp.outlined-text-field.outline')}; |
| }); |
| |
| @override |
| Color? get iconColor => ${componentColor("md.comp.filled-text-field.leading-icon")}; |
| |
| @override |
| Color? get prefixIconColor => MaterialStateColor.resolveWith((Set<MaterialState> states) {${componentColor('md.comp.filled-text-field.error.leading-icon') == componentColor('md.comp.filled-text-field.leading-icon') ? '' : ''' |
| if(states.contains(MaterialState.error)) { |
| if (states.contains(MaterialState.hovered)) { |
| return ${componentColor('md.comp.filled-text-field.error.hover.leading-icon')}; |
| } |
| if (states.contains(MaterialState.focused)) { |
| return ${componentColor('md.comp.filled-text-field.error.focus.leading-icon')}; |
| } |
| return ${componentColor('md.comp.filled-text-field.error.leading-icon')}; |
| }'''}${componentColor('md.comp.filled-text-field.hover.leading-icon') == componentColor('md.comp.filled-text-field.leading-icon') ? '' : ''' |
| if (states.contains(MaterialState.hovered)) { |
| return ${componentColor('md.comp.filled-text-field.hover.leading-icon')}; |
| }'''}${componentColor('md.comp.filled-text-field.focus.leading-icon') == componentColor('md.comp.filled-text-field.leading-icon') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return ${componentColor('md.comp.filled-text-field.focus.leading-icon')}; |
| }'''} |
| if (states.contains(MaterialState.disabled)) { |
| return ${componentColor('md.comp.filled-text-field.disabled.leading-icon')}; |
| } |
| return ${componentColor('md.comp.filled-text-field.leading-icon')}; |
| }); |
| |
| @override |
| Color? get suffixIconColor => MaterialStateColor.resolveWith((Set<MaterialState> states) { |
| if(states.contains(MaterialState.error)) { |
| if (states.contains(MaterialState.hovered)) { |
| return ${componentColor('md.comp.filled-text-field.error.hover.trailing-icon')}; |
| }${componentColor('md.comp.filled-text-field.error.trailing-icon') == componentColor('md.comp.filled-text-field.error.focus.trailing-icon') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return ${componentColor('md.comp.filled-text-field.error.focus.trailing-icon')}; |
| }'''} |
| return ${componentColor('md.comp.filled-text-field.error.trailing-icon')}; |
| }${componentColor('md.comp.filled-text-field.hover.trailing-icon') == componentColor('md.comp.filled-text-field.trailing-icon') ? '' : ''' |
| if (states.contains(MaterialState.hovered)) { |
| return ${componentColor('md.comp.filled-text-field.hover.trailing-icon')}; |
| }'''}${componentColor('md.comp.filled-text-field.focus.trailing-icon') == componentColor('md.comp.filled-text-field.trailing-icon') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return ${componentColor('md.comp.filled-text-field.focus.trailing-icon')}; |
| }'''} |
| if (states.contains(MaterialState.disabled)) { |
| return ${componentColor('md.comp.filled-text-field.disabled.trailing-icon')}; |
| } |
| return ${componentColor('md.comp.filled-text-field.trailing-icon')}; |
| }); |
| |
| @override |
| TextStyle? get labelStyle => MaterialStateTextStyle.resolveWith((Set<MaterialState> states) { |
| final TextStyle textStyle= ${textStyle("md.comp.filled-text-field.label-text")} ?? const TextStyle(); |
| if(states.contains(MaterialState.error)) { |
| if (states.contains(MaterialState.hovered)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.hover.label-text')}); |
| } |
| if (states.contains(MaterialState.focused)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.focus.label-text')}); |
| } |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.label-text')}); |
| } |
| if (states.contains(MaterialState.hovered)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.hover.label-text')}); |
| } |
| if (states.contains(MaterialState.focused)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.focus.label-text')}); |
| } |
| if (states.contains(MaterialState.disabled)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.disabled.label-text')}); |
| } |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.label-text')}); |
| }); |
| |
| @override |
| TextStyle? get floatingLabelStyle => MaterialStateTextStyle.resolveWith((Set<MaterialState> states) { |
| final TextStyle textStyle= ${textStyle("md.comp.filled-text-field.label-text")} ?? const TextStyle(); |
| if(states.contains(MaterialState.error)) { |
| if (states.contains(MaterialState.hovered)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.hover.label-text')}); |
| } |
| if (states.contains(MaterialState.focused)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.focus.label-text')}); |
| } |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.label-text')}); |
| } |
| if (states.contains(MaterialState.hovered)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.hover.label-text')}); |
| } |
| if (states.contains(MaterialState.focused)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.focus.label-text')}); |
| } |
| if (states.contains(MaterialState.disabled)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.disabled.label-text')}); |
| } |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.label-text')}); |
| }); |
| |
| @override |
| TextStyle? get helperStyle => MaterialStateTextStyle.resolveWith((Set<MaterialState> states) { |
| final TextStyle textStyle= ${textStyle("md.comp.filled-text-field.supporting-text")} ?? const TextStyle();${componentColor('md.comp.filled-text-field.hover.supporting-text') == componentColor('md.comp.filled-text-field.supporting-text') ? '' : ''' |
| if (states.contains(MaterialState.hovered)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.hover.supporting-text')}); |
| }'''}${componentColor('md.comp.filled-text-field.focus.supporting-text') == componentColor('md.comp.filled-text-field.supporting-text') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.focus.supporting-text')}); |
| }'''} |
| if (states.contains(MaterialState.disabled)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.disabled.supporting-text')}); |
| } |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.supporting-text')}); |
| }); |
| |
| @override |
| TextStyle? get errorStyle => MaterialStateTextStyle.resolveWith((Set<MaterialState> states) { |
| final TextStyle textStyle= ${textStyle("md.comp.filled-text-field.supporting-text")} ?? const TextStyle();${componentColor('md.comp.filled-text-field.error.hover.supporting-text') == componentColor('md.comp.filled-text-field.error.supporting-text') ? '' : ''' |
| if (states.contains(MaterialState.hovered)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.hover.supporting-text')}); |
| }'''}${componentColor('md.comp.filled-text-field.error.focus.supporting-text') == componentColor('md.comp.filled-text-field.error.supporting-text') ? '' : ''' |
| if (states.contains(MaterialState.focused)) { |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.focus.supporting-text')}); |
| }'''} |
| return textStyle.copyWith(color:${componentColor('md.comp.filled-text-field.error.supporting-text')}); |
| }); |
| } |
| '''; |
| } |