| // 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 NavigationRailTemplate extends TokenTemplate { | |
| const NavigationRailTemplate( | |
| super.blockName, | |
| super.fileName, | |
| super.tokens, { | |
| super.colorSchemePrefix = '_colors.', | |
| super.textThemePrefix = '_textTheme.', | |
| }); | |
| @override | |
| String generate() => | |
| ''' | |
| class _${blockName}DefaultsM3 extends NavigationRailThemeData { | |
| _${blockName}DefaultsM3(this.context) | |
| : super( | |
| elevation: ${elevation("md.comp.navigation-rail.container")}, | |
| groupAlignment: -1, | |
| labelType: NavigationRailLabelType.none, | |
| useIndicator: true, | |
| minWidth: ${getToken('md.comp.navigation-rail.container.width')}, | |
| minExtendedWidth: 256, | |
| ); | |
| final BuildContext context; | |
| late final ColorScheme _colors = Theme.of(context).colorScheme; | |
| late final TextTheme _textTheme = Theme.of(context).textTheme; | |
| @override Color? get backgroundColor => ${componentColor("md.comp.navigation-rail.container")}; | |
| @override TextStyle? get unselectedLabelTextStyle { | |
| return ${textStyle("md.comp.navigation-rail.label-text")}!.copyWith(color: ${componentColor("md.comp.navigation-rail.inactive.focus.label-text")}); | |
| } | |
| @override TextStyle? get selectedLabelTextStyle { | |
| return ${textStyle("md.comp.navigation-rail.label-text")}!.copyWith(color: ${componentColor("md.comp.navigation-rail.active.focus.label-text")}); | |
| } | |
| @override IconThemeData? get unselectedIconTheme { | |
| return IconThemeData( | |
| size: ${getToken("md.comp.navigation-rail.icon.size")}, | |
| color: ${componentColor("md.comp.navigation-rail.inactive.icon")}, | |
| ); | |
| } | |
| @override IconThemeData? get selectedIconTheme { | |
| return IconThemeData( | |
| size: ${getToken("md.comp.navigation-rail.icon.size")}, | |
| color: ${componentColor("md.comp.navigation-rail.active.icon")}, | |
| ); | |
| } | |
| @override Color? get indicatorColor => ${componentColor("md.comp.navigation-rail.active-indicator")}; | |
| @override ShapeBorder? get indicatorShape => ${shape("md.comp.navigation-rail.active-indicator")}; | |
| } | |
| '''; | |
| } |