// 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? get backgroundColor => MaterialStatePropertyAll(${componentColor("md.comp.search-bar.container")}); @override MaterialStateProperty? get elevation => const MaterialStatePropertyAll(${elevation("md.comp.search-bar.container")}); @override MaterialStateProperty? get shadowColor => MaterialStatePropertyAll(_colors.shadow); @override MaterialStateProperty? get surfaceTintColor => MaterialStatePropertyAll(${colorOrTransparent("md.comp.search-bar.container.surface-tint-layer.color")}); @override MaterialStateProperty? get overlayColor => MaterialStateProperty.resolveWith((Set 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? get shape => const MaterialStatePropertyAll(${shape('md.comp.search-bar.container', '')}); @override MaterialStateProperty? get padding => const MaterialStatePropertyAll(EdgeInsets.symmetric(horizontal: 8.0)); @override MaterialStateProperty get textStyle => MaterialStatePropertyAll(${textStyleWithColor('md.comp.search-bar.input-text')}); @override MaterialStateProperty get hintStyle => MaterialStatePropertyAll(${textStyleWithColor('md.comp.search-bar.supporting-text')}); @override BoxConstraints get constraints => const BoxConstraints(minWidth: 360.0, maxWidth: 800.0, minHeight: ${getToken('md.comp.search-bar.container.height')}); @override TextCapitalization get textCapitalization => TextCapitalization.none; } '''; }