ThemeData property cleanup. (#91774)
This commit is contained in:
parent
acab6dccef
commit
ac745b3f75
@ -1726,8 +1726,8 @@ class ThemeData with Diagnosticable {
|
|||||||
unselectedWidgetColor: Color.lerp(a.unselectedWidgetColor, b.unselectedWidgetColor, t)!,
|
unselectedWidgetColor: Color.lerp(a.unselectedWidgetColor, b.unselectedWidgetColor, t)!,
|
||||||
disabledColor: Color.lerp(a.disabledColor, b.disabledColor, t)!,
|
disabledColor: Color.lerp(a.disabledColor, b.disabledColor, t)!,
|
||||||
buttonTheme: t < 0.5 ? a.buttonTheme : b.buttonTheme,
|
buttonTheme: t < 0.5 ? a.buttonTheme : b.buttonTheme,
|
||||||
toggleButtonsTheme: ToggleButtonsThemeData.lerp(a.toggleButtonsTheme, b.toggleButtonsTheme, t)!,
|
|
||||||
buttonColor: Color.lerp(a.buttonColor, b.buttonColor, t)!,
|
buttonColor: Color.lerp(a.buttonColor, b.buttonColor, t)!,
|
||||||
|
toggleButtonsTheme: ToggleButtonsThemeData.lerp(a.toggleButtonsTheme, b.toggleButtonsTheme, t)!,
|
||||||
secondaryHeaderColor: Color.lerp(a.secondaryHeaderColor, b.secondaryHeaderColor, t)!,
|
secondaryHeaderColor: Color.lerp(a.secondaryHeaderColor, b.secondaryHeaderColor, t)!,
|
||||||
textSelectionColor: Color.lerp(a.textSelectionColor, b.textSelectionColor, t)!,
|
textSelectionColor: Color.lerp(a.textSelectionColor, b.textSelectionColor, t)!,
|
||||||
cursorColor: Color.lerp(a.cursorColor, b.cursorColor, t)!,
|
cursorColor: Color.lerp(a.cursorColor, b.cursorColor, t)!,
|
||||||
@ -1775,7 +1775,7 @@ class ThemeData with Diagnosticable {
|
|||||||
textButtonTheme: TextButtonThemeData.lerp(a.textButtonTheme, b.textButtonTheme, t)!,
|
textButtonTheme: TextButtonThemeData.lerp(a.textButtonTheme, b.textButtonTheme, t)!,
|
||||||
elevatedButtonTheme: ElevatedButtonThemeData.lerp(a.elevatedButtonTheme, b.elevatedButtonTheme, t)!,
|
elevatedButtonTheme: ElevatedButtonThemeData.lerp(a.elevatedButtonTheme, b.elevatedButtonTheme, t)!,
|
||||||
outlinedButtonTheme: OutlinedButtonThemeData.lerp(a.outlinedButtonTheme, b.outlinedButtonTheme, t)!,
|
outlinedButtonTheme: OutlinedButtonThemeData.lerp(a.outlinedButtonTheme, b.outlinedButtonTheme, t)!,
|
||||||
textSelectionTheme: TextSelectionThemeData .lerp(a.textSelectionTheme, b.textSelectionTheme, t)!,
|
textSelectionTheme: TextSelectionThemeData.lerp(a.textSelectionTheme, b.textSelectionTheme, t)!,
|
||||||
dataTableTheme: DataTableThemeData.lerp(a.dataTableTheme, b.dataTableTheme, t),
|
dataTableTheme: DataTableThemeData.lerp(a.dataTableTheme, b.dataTableTheme, t),
|
||||||
checkboxTheme: CheckboxThemeData.lerp(a.checkboxTheme, b.checkboxTheme, t),
|
checkboxTheme: CheckboxThemeData.lerp(a.checkboxTheme, b.checkboxTheme, t),
|
||||||
radioTheme: RadioThemeData.lerp(a.radioTheme, b.radioTheme, t),
|
radioTheme: RadioThemeData.lerp(a.radioTheme, b.radioTheme, t),
|
||||||
@ -1802,14 +1802,16 @@ class ThemeData with Diagnosticable {
|
|||||||
&& other.primaryColorBrightness == primaryColorBrightness
|
&& other.primaryColorBrightness == primaryColorBrightness
|
||||||
&& other.primaryColorLight == primaryColorLight
|
&& other.primaryColorLight == primaryColorLight
|
||||||
&& other.primaryColorDark == primaryColorDark
|
&& other.primaryColorDark == primaryColorDark
|
||||||
|
&& other.canvasColor == canvasColor
|
||||||
|
&& other.shadowColor == shadowColor
|
||||||
&& other.accentColor == accentColor
|
&& other.accentColor == accentColor
|
||||||
&& other.accentColorBrightness == accentColorBrightness
|
&& other.accentColorBrightness == accentColorBrightness
|
||||||
&& other.canvasColor == canvasColor
|
|
||||||
&& other.scaffoldBackgroundColor == scaffoldBackgroundColor
|
&& other.scaffoldBackgroundColor == scaffoldBackgroundColor
|
||||||
&& other.bottomAppBarColor == bottomAppBarColor
|
&& other.bottomAppBarColor == bottomAppBarColor
|
||||||
&& other.cardColor == cardColor
|
&& other.cardColor == cardColor
|
||||||
&& other.shadowColor == shadowColor
|
|
||||||
&& other.dividerColor == dividerColor
|
&& other.dividerColor == dividerColor
|
||||||
|
&& other.focusColor == focusColor
|
||||||
|
&& other.hoverColor == hoverColor
|
||||||
&& other.highlightColor == highlightColor
|
&& other.highlightColor == highlightColor
|
||||||
&& other.splashColor == splashColor
|
&& other.splashColor == splashColor
|
||||||
&& other.splashFactory == splashFactory
|
&& other.splashFactory == splashFactory
|
||||||
@ -1890,10 +1892,10 @@ class ThemeData with Diagnosticable {
|
|||||||
primaryColorBrightness,
|
primaryColorBrightness,
|
||||||
primaryColorLight,
|
primaryColorLight,
|
||||||
primaryColorDark,
|
primaryColorDark,
|
||||||
accentColor,
|
|
||||||
accentColorBrightness,
|
|
||||||
canvasColor,
|
canvasColor,
|
||||||
shadowColor,
|
shadowColor,
|
||||||
|
accentColor,
|
||||||
|
accentColorBrightness,
|
||||||
scaffoldBackgroundColor,
|
scaffoldBackgroundColor,
|
||||||
bottomAppBarColor,
|
bottomAppBarColor,
|
||||||
cardColor,
|
cardColor,
|
||||||
@ -1909,7 +1911,6 @@ class ThemeData with Diagnosticable {
|
|||||||
buttonTheme,
|
buttonTheme,
|
||||||
buttonColor,
|
buttonColor,
|
||||||
toggleButtonsTheme,
|
toggleButtonsTheme,
|
||||||
toggleableActiveColor,
|
|
||||||
secondaryHeaderColor,
|
secondaryHeaderColor,
|
||||||
textSelectionColor,
|
textSelectionColor,
|
||||||
cursorColor,
|
cursorColor,
|
||||||
@ -1919,6 +1920,7 @@ class ThemeData with Diagnosticable {
|
|||||||
indicatorColor,
|
indicatorColor,
|
||||||
hintColor,
|
hintColor,
|
||||||
errorColor,
|
errorColor,
|
||||||
|
toggleableActiveColor,
|
||||||
textTheme,
|
textTheme,
|
||||||
primaryTextTheme,
|
primaryTextTheme,
|
||||||
accentTextTheme,
|
accentTextTheme,
|
||||||
@ -1975,10 +1977,12 @@ class ThemeData with Diagnosticable {
|
|||||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||||
super.debugFillProperties(properties);
|
super.debugFillProperties(properties);
|
||||||
final ThemeData defaultData = ThemeData.fallback();
|
final ThemeData defaultData = ThemeData.fallback();
|
||||||
|
properties.add(DiagnosticsProperty<VisualDensity>('visualDensity', visualDensity, level: DiagnosticLevel.debug));
|
||||||
properties.add(EnumProperty<TargetPlatform>('platform', platform, defaultValue: defaultTargetPlatform, level: DiagnosticLevel.debug));
|
properties.add(EnumProperty<TargetPlatform>('platform', platform, defaultValue: defaultTargetPlatform, level: DiagnosticLevel.debug));
|
||||||
properties.add(EnumProperty<Brightness>('brightness', brightness, defaultValue: defaultData.brightness, level: DiagnosticLevel.debug));
|
|
||||||
properties.add(ColorProperty('primaryColor', primaryColor, defaultValue: defaultData.primaryColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('primaryColor', primaryColor, defaultValue: defaultData.primaryColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(EnumProperty<Brightness>('primaryColorBrightness', primaryColorBrightness, defaultValue: defaultData.primaryColorBrightness, level: DiagnosticLevel.debug));
|
properties.add(EnumProperty<Brightness>('primaryColorBrightness', primaryColorBrightness, defaultValue: defaultData.primaryColorBrightness, level: DiagnosticLevel.debug));
|
||||||
|
properties.add(ColorProperty('primaryColorLight', primaryColorLight, defaultValue: defaultData.primaryColorLight, level: DiagnosticLevel.debug));
|
||||||
|
properties.add(ColorProperty('primaryColorDark', primaryColorDark, defaultValue: defaultData.primaryColorDark, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('accentColor', accentColor, defaultValue: defaultData.accentColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('accentColor', accentColor, defaultValue: defaultData.accentColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(EnumProperty<Brightness>('accentColorBrightness', accentColorBrightness, defaultValue: defaultData.accentColorBrightness, level: DiagnosticLevel.debug));
|
properties.add(EnumProperty<Brightness>('accentColorBrightness', accentColorBrightness, defaultValue: defaultData.accentColorBrightness, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('canvasColor', canvasColor, defaultValue: defaultData.canvasColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('canvasColor', canvasColor, defaultValue: defaultData.canvasColor, level: DiagnosticLevel.debug));
|
||||||
@ -1991,6 +1995,7 @@ class ThemeData with Diagnosticable {
|
|||||||
properties.add(ColorProperty('hoverColor', hoverColor, defaultValue: defaultData.hoverColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('hoverColor', hoverColor, defaultValue: defaultData.hoverColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('highlightColor', highlightColor, defaultValue: defaultData.highlightColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('highlightColor', highlightColor, defaultValue: defaultData.highlightColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('splashColor', splashColor, defaultValue: defaultData.splashColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('splashColor', splashColor, defaultValue: defaultData.splashColor, level: DiagnosticLevel.debug));
|
||||||
|
properties.add(DiagnosticsProperty<InteractiveInkFeatureFactory>('splashFactory', splashFactory, defaultValue: defaultData.splashFactory, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('selectedRowColor', selectedRowColor, defaultValue: defaultData.selectedRowColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('selectedRowColor', selectedRowColor, defaultValue: defaultData.selectedRowColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('unselectedWidgetColor', unselectedWidgetColor, defaultValue: defaultData.unselectedWidgetColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('unselectedWidgetColor', unselectedWidgetColor, defaultValue: defaultData.unselectedWidgetColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(ColorProperty('disabledColor', disabledColor, defaultValue: defaultData.disabledColor, level: DiagnosticLevel.debug));
|
properties.add(ColorProperty('disabledColor', disabledColor, defaultValue: defaultData.disabledColor, level: DiagnosticLevel.debug));
|
||||||
@ -2023,13 +2028,13 @@ class ThemeData with Diagnosticable {
|
|||||||
properties.add(DiagnosticsProperty<bool>('applyElevationOverlayColor', applyElevationOverlayColor, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<bool>('applyElevationOverlayColor', applyElevationOverlayColor, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<PageTransitionsTheme>('pageTransitionsTheme', pageTransitionsTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<PageTransitionsTheme>('pageTransitionsTheme', pageTransitionsTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<AppBarTheme>('appBarTheme', appBarTheme, defaultValue: defaultData.appBarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<AppBarTheme>('appBarTheme', appBarTheme, defaultValue: defaultData.appBarTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<ScrollbarThemeData>('ScrollbarTheme', scrollbarTheme, defaultValue: defaultData.scrollbarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<ScrollbarThemeData>('scrollbarTheme', scrollbarTheme, defaultValue: defaultData.scrollbarTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<BottomAppBarTheme>('bottomAppBarTheme', bottomAppBarTheme, defaultValue: defaultData.bottomAppBarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<BottomAppBarTheme>('bottomAppBarTheme', bottomAppBarTheme, defaultValue: defaultData.bottomAppBarTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<ColorScheme>('colorScheme', colorScheme, defaultValue: defaultData.colorScheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<ColorScheme>('colorScheme', colorScheme, defaultValue: defaultData.colorScheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<DialogTheme>('dialogTheme', dialogTheme, defaultValue: defaultData.dialogTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<DialogTheme>('dialogTheme', dialogTheme, defaultValue: defaultData.dialogTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<FloatingActionButtonThemeData>('floatingActionButtonThemeData', floatingActionButtonTheme, defaultValue: defaultData.floatingActionButtonTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<FloatingActionButtonThemeData>('floatingActionButtonTheme', floatingActionButtonTheme, defaultValue: defaultData.floatingActionButtonTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<NavigationBarThemeData>('navigationBarTheme', navigationBarTheme, defaultValue: defaultData.navigationBarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<NavigationBarThemeData>('navigationBarTheme', navigationBarTheme, defaultValue: defaultData.navigationBarTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<NavigationRailThemeData>('navigationRailThemeData', navigationRailTheme, defaultValue: defaultData.navigationRailTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<NavigationRailThemeData>('navigationRailTheme', navigationRailTheme, defaultValue: defaultData.navigationRailTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<Typography>('typography', typography, defaultValue: defaultData.typography, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<Typography>('typography', typography, defaultValue: defaultData.typography, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<NoDefaultCupertinoThemeData>('cupertinoOverrideTheme', cupertinoOverrideTheme, defaultValue: defaultData.cupertinoOverrideTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<NoDefaultCupertinoThemeData>('cupertinoOverrideTheme', cupertinoOverrideTheme, defaultValue: defaultData.cupertinoOverrideTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<SnackBarThemeData>('snackBarTheme', snackBarTheme, defaultValue: defaultData.snackBarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<SnackBarThemeData>('snackBarTheme', snackBarTheme, defaultValue: defaultData.snackBarTheme, level: DiagnosticLevel.debug));
|
||||||
@ -2040,7 +2045,6 @@ class ThemeData with Diagnosticable {
|
|||||||
properties.add(DiagnosticsProperty<ButtonBarThemeData>('buttonBarTheme', buttonBarTheme, defaultValue: defaultData.buttonBarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<ButtonBarThemeData>('buttonBarTheme', buttonBarTheme, defaultValue: defaultData.buttonBarTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<TimePickerThemeData>('timePickerTheme', timePickerTheme, defaultValue: defaultData.timePickerTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<TimePickerThemeData>('timePickerTheme', timePickerTheme, defaultValue: defaultData.timePickerTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<TextSelectionThemeData>('textSelectionTheme', textSelectionTheme, defaultValue: defaultData.textSelectionTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<TextSelectionThemeData>('textSelectionTheme', textSelectionTheme, defaultValue: defaultData.textSelectionTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<TextSelectionThemeData>('textSelectionTheme', textSelectionTheme, defaultValue: defaultData.textSelectionTheme, level: DiagnosticLevel.debug));
|
|
||||||
properties.add(DiagnosticsProperty<BottomNavigationBarThemeData>('bottomNavigationBarTheme', bottomNavigationBarTheme, defaultValue: defaultData.bottomNavigationBarTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<BottomNavigationBarThemeData>('bottomNavigationBarTheme', bottomNavigationBarTheme, defaultValue: defaultData.bottomNavigationBarTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<TextButtonThemeData>('textButtonTheme', textButtonTheme, defaultValue: defaultData.textButtonTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<TextButtonThemeData>('textButtonTheme', textButtonTheme, defaultValue: defaultData.textButtonTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<ElevatedButtonThemeData>('elevatedButtonTheme', elevatedButtonTheme, defaultValue: defaultData.elevatedButtonTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<ElevatedButtonThemeData>('elevatedButtonTheme', elevatedButtonTheme, defaultValue: defaultData.elevatedButtonTheme, level: DiagnosticLevel.debug));
|
||||||
@ -2052,6 +2056,8 @@ class ThemeData with Diagnosticable {
|
|||||||
properties.add(DiagnosticsProperty<ProgressIndicatorThemeData>('progressIndicatorTheme', progressIndicatorTheme, defaultValue: defaultData.progressIndicatorTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<ProgressIndicatorThemeData>('progressIndicatorTheme', progressIndicatorTheme, defaultValue: defaultData.progressIndicatorTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<DrawerThemeData>('drawerTheme', drawerTheme, defaultValue: defaultData.drawerTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<DrawerThemeData>('drawerTheme', drawerTheme, defaultValue: defaultData.drawerTheme, level: DiagnosticLevel.debug));
|
||||||
properties.add(DiagnosticsProperty<ListTileThemeData>('listTileTheme', listTileTheme, defaultValue: defaultData.listTileTheme, level: DiagnosticLevel.debug));
|
properties.add(DiagnosticsProperty<ListTileThemeData>('listTileTheme', listTileTheme, defaultValue: defaultData.listTileTheme, level: DiagnosticLevel.debug));
|
||||||
|
properties.add(DiagnosticsProperty<bool>('fixTextFieldOutlineLabel', fixTextFieldOutlineLabel, defaultValue: true, level: DiagnosticLevel.debug));
|
||||||
|
properties.add(DiagnosticsProperty<bool>('useTextSelectionTheme', useTextSelectionTheme, defaultValue: true, level: DiagnosticLevel.debug));
|
||||||
properties.add(EnumProperty<AndroidOverscrollIndicator>('androidOverscrollIndicator', androidOverscrollIndicator, defaultValue: null, level: DiagnosticLevel.debug));
|
properties.add(EnumProperty<AndroidOverscrollIndicator>('androidOverscrollIndicator', androidOverscrollIndicator, defaultValue: null, level: DiagnosticLevel.debug));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -245,8 +245,30 @@ void main() {
|
|||||||
expect(expanded.maxHeight, equals(double.infinity));
|
expect(expanded.maxHeight, equals(double.infinity));
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('ThemeData.copyWith correctly creates new ThemeData with all copied arguments', (WidgetTester tester) async {
|
test('copyWith, ==, hashCode basics', () {
|
||||||
|
expect(ThemeData(), ThemeData().copyWith());
|
||||||
|
expect(ThemeData().hashCode, ThemeData().copyWith().hashCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('== and hashCode include focusColor and hoverColor', () {
|
||||||
|
// regression test for https://github.com/flutter/flutter/issues/91587
|
||||||
|
|
||||||
|
// Focus color and hover color are used in the default button theme, so
|
||||||
|
// use an empty one to ensure that just focus and hover colors are tested.
|
||||||
|
const ButtonThemeData buttonTheme = ButtonThemeData();
|
||||||
|
|
||||||
|
final ThemeData focusColorBlack = ThemeData(focusColor: Colors.black, buttonTheme: buttonTheme);
|
||||||
|
final ThemeData focusColorWhite = ThemeData(focusColor: Colors.white, buttonTheme: buttonTheme);
|
||||||
|
expect(focusColorBlack != focusColorWhite, true);
|
||||||
|
expect(focusColorBlack.hashCode != focusColorWhite.hashCode, true);
|
||||||
|
|
||||||
|
final ThemeData hoverColorBlack = ThemeData(hoverColor: Colors.black, buttonTheme: buttonTheme);
|
||||||
|
final ThemeData hoverColorWhite = ThemeData(hoverColor: Colors.white, buttonTheme: buttonTheme);
|
||||||
|
expect(hoverColorBlack != hoverColorWhite, true);
|
||||||
|
expect(hoverColorBlack.hashCode != hoverColorWhite.hashCode, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
testWidgets('ThemeData.copyWith correctly creates new ThemeData with all copied arguments', (WidgetTester tester) async {
|
||||||
final SliderThemeData sliderTheme = SliderThemeData.fromPrimaryColors(
|
final SliderThemeData sliderTheme = SliderThemeData.fromPrimaryColors(
|
||||||
primaryColor: Colors.black,
|
primaryColor: Colors.black,
|
||||||
primaryColorDark: Colors.black,
|
primaryColorDark: Colors.black,
|
||||||
@ -640,4 +662,106 @@ void main() {
|
|||||||
expect(theme.errorColor, equals(lightColors.error));
|
expect(theme.errorColor, equals(lightColors.error));
|
||||||
expect(theme.applyElevationOverlayColor, isFalse);
|
expect(theme.applyElevationOverlayColor, isFalse);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('ThemeData diagnostics include all properties', () {
|
||||||
|
// List of properties must match the properties in ThemeData.hashCode()
|
||||||
|
final Set<String> expectedPropertyNames = <String>{
|
||||||
|
'visualDensity',
|
||||||
|
'primaryColor',
|
||||||
|
'primaryColorBrightness',
|
||||||
|
'primaryColorLight',
|
||||||
|
'primaryColorDark',
|
||||||
|
'canvasColor',
|
||||||
|
'shadowColor',
|
||||||
|
'accentColor',
|
||||||
|
'accentColorBrightness',
|
||||||
|
'scaffoldBackgroundColor',
|
||||||
|
'bottomAppBarColor',
|
||||||
|
'cardColor',
|
||||||
|
'dividerColor',
|
||||||
|
'focusColor',
|
||||||
|
'hoverColor',
|
||||||
|
'highlightColor',
|
||||||
|
'splashColor',
|
||||||
|
'splashFactory',
|
||||||
|
'selectedRowColor',
|
||||||
|
'unselectedWidgetColor',
|
||||||
|
'disabledColor',
|
||||||
|
'buttonTheme',
|
||||||
|
'buttonColor',
|
||||||
|
'toggleButtonsTheme',
|
||||||
|
'secondaryHeaderColor',
|
||||||
|
'textSelectionColor',
|
||||||
|
'cursorColor',
|
||||||
|
'textSelectionHandleColor',
|
||||||
|
'backgroundColor',
|
||||||
|
'dialogBackgroundColor',
|
||||||
|
'indicatorColor',
|
||||||
|
'hintColor',
|
||||||
|
'errorColor',
|
||||||
|
'toggleableActiveColor',
|
||||||
|
'textTheme',
|
||||||
|
'primaryTextTheme',
|
||||||
|
'accentTextTheme',
|
||||||
|
'inputDecorationTheme',
|
||||||
|
'iconTheme',
|
||||||
|
'primaryIconTheme',
|
||||||
|
'accentIconTheme',
|
||||||
|
'sliderTheme',
|
||||||
|
'tabBarTheme',
|
||||||
|
'tooltipTheme',
|
||||||
|
'cardTheme',
|
||||||
|
'chipTheme',
|
||||||
|
'platform',
|
||||||
|
'materialTapTargetSize',
|
||||||
|
'applyElevationOverlayColor',
|
||||||
|
'pageTransitionsTheme',
|
||||||
|
'appBarTheme',
|
||||||
|
'scrollbarTheme',
|
||||||
|
'bottomAppBarTheme',
|
||||||
|
'colorScheme',
|
||||||
|
'dialogTheme',
|
||||||
|
'floatingActionButtonTheme',
|
||||||
|
'navigationBarTheme',
|
||||||
|
'navigationRailTheme',
|
||||||
|
'typography',
|
||||||
|
'cupertinoOverrideTheme',
|
||||||
|
'snackBarTheme',
|
||||||
|
'bottomSheetTheme',
|
||||||
|
'popupMenuTheme',
|
||||||
|
'bannerTheme',
|
||||||
|
'dividerTheme',
|
||||||
|
'buttonBarTheme',
|
||||||
|
'bottomNavigationBarTheme',
|
||||||
|
'timePickerTheme',
|
||||||
|
'textButtonTheme',
|
||||||
|
'elevatedButtonTheme',
|
||||||
|
'outlinedButtonTheme',
|
||||||
|
'textSelectionTheme',
|
||||||
|
'dataTableTheme',
|
||||||
|
'checkboxTheme',
|
||||||
|
'radioTheme',
|
||||||
|
'switchTheme',
|
||||||
|
'progressIndicatorTheme',
|
||||||
|
'drawerTheme',
|
||||||
|
'listTileTheme',
|
||||||
|
'fixTextFieldOutlineLabel',
|
||||||
|
'useTextSelectionTheme',
|
||||||
|
'androidOverscrollIndicator',
|
||||||
|
};
|
||||||
|
|
||||||
|
final DiagnosticPropertiesBuilder properties = DiagnosticPropertiesBuilder();
|
||||||
|
ThemeData.light().debugFillProperties(properties);
|
||||||
|
final List<String> propertyNameList = properties.properties
|
||||||
|
.map((final DiagnosticsNode node) => node.name)
|
||||||
|
.whereType<String>()
|
||||||
|
.toList();
|
||||||
|
final Set<String> propertyNames = propertyNameList.toSet();
|
||||||
|
|
||||||
|
// Ensure there are no duplicates.
|
||||||
|
expect(propertyNameList.length, propertyNames.length);
|
||||||
|
|
||||||
|
// Ensure they are all there.
|
||||||
|
expect(propertyNames, expectedPropertyNames);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user