// 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']}); } '''; }