| // 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 'package:flutter/foundation.dart'; |
| import 'package:flutter/material.dart'; |
| |
| class MaterialDemoThemeData { |
| static final ThemeData themeData = ThemeData( |
| colorScheme: _colorScheme.copyWith( |
| background: Colors.white, |
| ), |
| canvasColor: _colorScheme.background, |
| highlightColor: Colors.transparent, |
| indicatorColor: _colorScheme.onPrimary, |
| scaffoldBackgroundColor: _colorScheme.background, |
| secondaryHeaderColor: _colorScheme.background, |
| typography: Typography.material2018( |
| platform: defaultTargetPlatform, |
| ), |
| visualDensity: VisualDensity.standard, |
| // Component themes |
| appBarTheme: AppBarTheme( |
| color: _colorScheme.primary, |
| iconTheme: IconThemeData(color: _colorScheme.onPrimary), |
| ), |
| bottomAppBarTheme: BottomAppBarTheme( |
| color: _colorScheme.primary, |
| ), |
| checkboxTheme: CheckboxThemeData( |
| fillColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) { |
| if (states.contains(MaterialState.disabled)) { |
| return null; |
| } |
| return states.contains(MaterialState.selected) |
| ? _colorScheme.primary |
| : null; |
| }), |
| ), |
| radioTheme: RadioThemeData( |
| fillColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) { |
| if (states.contains(MaterialState.disabled)) { |
| return null; |
| } |
| return states.contains(MaterialState.selected) |
| ? _colorScheme.primary |
| : null; |
| }), |
| ), |
| snackBarTheme: const SnackBarThemeData( |
| behavior: SnackBarBehavior.floating, |
| ), |
| switchTheme: SwitchThemeData( |
| thumbColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) { |
| if (states.contains(MaterialState.disabled)) { |
| return null; |
| } |
| return states.contains(MaterialState.selected) |
| ? _colorScheme.primary |
| : null; |
| }), |
| trackColor: MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) { |
| if (states.contains(MaterialState.disabled)) { |
| return null; |
| } |
| return states.contains(MaterialState.selected) |
| ? _colorScheme.primary.withAlpha(0x80) |
| : null; |
| }), |
| )); |
| |
| static const ColorScheme _colorScheme = ColorScheme( |
| primary: Color(0xFF6200EE), |
| primaryContainer: Color(0xFF6200EE), |
| secondary: Color(0xFFFF5722), |
| secondaryContainer: Color(0xFFFF5722), |
| background: Colors.white, |
| surface: Color(0xFFF2F2F2), |
| onBackground: Colors.black, |
| onSurface: Colors.black, |
| error: Colors.red, |
| onError: Colors.white, |
| onPrimary: Colors.white, |
| onSecondary: Colors.white, |
| brightness: Brightness.light, |
| ); |
| } |