| // 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 SnackbarTemplate extends TokenTemplate { | |
| const SnackbarTemplate( | |
| this.tokenGroup, | |
| super.blockName, | |
| super.fileName, | |
| super.tokens, { | |
| super.colorSchemePrefix = '_colors.', | |
| }); | |
| final String tokenGroup; | |
| @override | |
| String generate() => | |
| ''' | |
| class _${blockName}DefaultsM3 extends SnackBarThemeData { | |
| _${blockName}DefaultsM3(this.context); | |
| final BuildContext context; | |
| late final ThemeData _theme = Theme.of(context); | |
| late final ColorScheme _colors = _theme.colorScheme; | |
| @override | |
| Color get backgroundColor => ${componentColor("$tokenGroup.container")}; | |
| @override | |
| Color get actionTextColor => WidgetStateColor.resolveWith((Set<WidgetState> states) { | |
| if (states.contains(WidgetState.disabled)) { | |
| return ${componentColor("$tokenGroup.action.pressed.label-text")}; | |
| } | |
| if (states.contains(WidgetState.pressed)) { | |
| return ${componentColor("$tokenGroup.action.pressed.label-text")}; | |
| } | |
| if (states.contains(WidgetState.hovered)) { | |
| return ${componentColor("$tokenGroup.action.hover.label-text")}; | |
| } | |
| if (states.contains(WidgetState.focused)) { | |
| return ${componentColor("$tokenGroup.action.focus.label-text")}; | |
| } | |
| return ${componentColor("$tokenGroup.action.label-text")}; | |
| }); | |
| @override | |
| Color get disabledActionTextColor => | |
| ${componentColor("$tokenGroup.action.pressed.label-text")}; | |
| @override | |
| TextStyle get contentTextStyle => | |
| ${textStyle("$tokenGroup.supporting-text")}!.copyWith | |
| (color: ${componentColor("$tokenGroup.supporting-text")}, | |
| ); | |
| @override | |
| double get elevation => ${elevation("$tokenGroup.container")}; | |
| @override | |
| ShapeBorder get shape => ${shape("$tokenGroup.container")}; | |
| @override | |
| SnackBarBehavior get behavior => SnackBarBehavior.fixed; | |
| @override | |
| EdgeInsets get insetPadding => const EdgeInsets.fromLTRB(15.0, 5.0, 15.0, 10.0); | |
| @override | |
| bool get showCloseIcon => false; | |
| @override | |
| Color? get closeIconColor => ${componentColor("$tokenGroup.icon")}; | |
| @override | |
| double get actionOverflowThreshold => 0.25; | |
| } | |
| '''; | |
| } |