| // 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 SearchBarTemplate extends TokenTemplate { |
| const SearchBarTemplate(super.blockName, super.fileName, super.tokens, { |
| super.colorSchemePrefix = '_colors.', |
| super.textThemePrefix = '_textTheme.' |
| }); |
| |
| @override |
| String generate() => ''' |
| class _SearchBarDefaultsM3 extends SearchBarThemeData { |
| _SearchBarDefaultsM3(this.context); |
| |
| final BuildContext context; |
| late final ColorScheme _colors = Theme.of(context).colorScheme; |
| late final TextTheme _textTheme = Theme.of(context).textTheme; |
| |
| @override |
| MaterialStateProperty<Color?>? get backgroundColor => |
| MaterialStatePropertyAll<Color>(${componentColor("md.comp.search-bar.container")}); |
| |
| @override |
| MaterialStateProperty<double>? get elevation => |
| const MaterialStatePropertyAll<double>(${elevation("md.comp.search-bar.container")}); |
| |
| @override |
| MaterialStateProperty<Color>? get shadowColor => |
| MaterialStatePropertyAll<Color>(_colors.shadow); |
| |
| @override |
| MaterialStateProperty<Color>? get surfaceTintColor => |
| MaterialStatePropertyAll<Color>(${colorOrTransparent("md.comp.search-bar.container.surface-tint-layer.color")}); |
| |
| @override |
| MaterialStateProperty<Color?>? get overlayColor => |
| MaterialStateProperty.resolveWith((Set<MaterialState> states) { |
| if (states.contains(MaterialState.pressed)) { |
| return ${componentColor("md.comp.search-bar.pressed.state-layer")}; |
| } |
| if (states.contains(MaterialState.hovered)) { |
| return ${componentColor("md.comp.search-bar.hover.state-layer")}; |
| } |
| if (states.contains(MaterialState.focused)) { |
| return ${colorOrTransparent("md.comp.search-bar.focused.state-layer")}; |
| } |
| return Colors.transparent; |
| }); |
| |
| // No default side |
| |
| @override |
| MaterialStateProperty<OutlinedBorder>? get shape => |
| const MaterialStatePropertyAll<OutlinedBorder>(${shape('md.comp.search-bar.container', '')}); |
| |
| @override |
| MaterialStateProperty<EdgeInsetsGeometry>? get padding => |
| const MaterialStatePropertyAll<EdgeInsetsGeometry>(EdgeInsets.symmetric(horizontal: 8.0)); |
| |
| @override |
| MaterialStateProperty<TextStyle?> get textStyle => |
| MaterialStatePropertyAll<TextStyle?>(${textStyleWithColor('md.comp.search-bar.input-text')}); |
| |
| @override |
| MaterialStateProperty<TextStyle?> get hintStyle => |
| MaterialStatePropertyAll<TextStyle?>(${textStyleWithColor('md.comp.search-bar.supporting-text')}); |
| |
| @override |
| BoxConstraints get constraints => |
| const BoxConstraints(minWidth: 360.0, maxWidth: 800.0, minHeight: ${tokens['md.comp.search-bar.container.height']}); |
| } |
| '''; |
| } |