@@ -320,7 +320,8 @@ class ThemeData with Diagnosticable {
320
320
ChipThemeData ? chipTheme,
321
321
DataTableThemeData ? dataTableTheme,
322
322
DatePickerThemeData ? datePickerTheme,
323
- DialogTheme ? dialogTheme,
323
+ // TODO(QuncCccccc): Change the parameter type to DialogThemeData
324
+ Object ? dialogTheme,
324
325
DividerThemeData ? dividerTheme,
325
326
DrawerThemeData ? drawerTheme,
326
327
DropdownMenuThemeData ? dropdownMenuTheme,
@@ -497,7 +498,15 @@ class ThemeData with Diagnosticable {
497
498
chipTheme ?? = const ChipThemeData ();
498
499
dataTableTheme ?? = const DataTableThemeData ();
499
500
datePickerTheme ?? = const DatePickerThemeData ();
500
- dialogTheme ?? = const DialogTheme ();
501
+ // TODO(QuncCccccc): Clean this up once the type of `dialogTheme` is changed to `DialogThemeData`
502
+ if (dialogTheme != null ) {
503
+ if (dialogTheme is DialogTheme ) {
504
+ dialogTheme = dialogTheme.data;
505
+ } else if (dialogTheme is ! DialogThemeData ) {
506
+ throw ArgumentError ('dialogTheme must be either a DialogThemeData or a DialogTheme' );
507
+ }
508
+ }
509
+ dialogTheme ?? = const DialogThemeData ();
501
510
dividerTheme ?? = const DividerThemeData ();
502
511
drawerTheme ?? = const DrawerThemeData ();
503
512
dropdownMenuTheme ?? = const DropdownMenuThemeData ();
@@ -590,7 +599,7 @@ class ThemeData with Diagnosticable {
590
599
chipTheme: chipTheme,
591
600
dataTableTheme: dataTableTheme,
592
601
datePickerTheme: datePickerTheme,
593
- dialogTheme: dialogTheme,
602
+ dialogTheme: dialogTheme as DialogThemeData ,
594
603
dividerTheme: dividerTheme,
595
604
drawerTheme: drawerTheme,
596
605
dropdownMenuTheme: dropdownMenuTheme,
@@ -1276,7 +1285,7 @@ class ThemeData with Diagnosticable {
1276
1285
final DatePickerThemeData datePickerTheme;
1277
1286
1278
1287
/// A theme for customizing the shape of a dialog.
1279
- final DialogTheme dialogTheme;
1288
+ final DialogThemeData dialogTheme;
1280
1289
1281
1290
/// A theme for customizing the color, thickness, and indents of [Divider] s,
1282
1291
/// [VerticalDivider] s, etc.
@@ -1462,7 +1471,8 @@ class ThemeData with Diagnosticable {
1462
1471
ChipThemeData ? chipTheme,
1463
1472
DataTableThemeData ? dataTableTheme,
1464
1473
DatePickerThemeData ? datePickerTheme,
1465
- DialogTheme ? dialogTheme,
1474
+ // TODO(QuncCccccc): Change the parameter type to DialogThemeData
1475
+ Object ? dialogTheme,
1466
1476
DividerThemeData ? dividerTheme,
1467
1477
DrawerThemeData ? drawerTheme,
1468
1478
DropdownMenuThemeData ? dropdownMenuTheme,
@@ -1510,6 +1520,15 @@ class ThemeData with Diagnosticable {
1510
1520
ButtonBarThemeData ? buttonBarTheme,
1511
1521
}) {
1512
1522
cupertinoOverrideTheme = cupertinoOverrideTheme? .noDefault ();
1523
+
1524
+ // TODO(QuncCccccc): Clean this up once the type of `dialogTheme` is changed to `DialogThemeData`
1525
+ if (dialogTheme != null ) {
1526
+ if (dialogTheme is DialogTheme ) {
1527
+ dialogTheme = dialogTheme.data;
1528
+ } else if (dialogTheme is ! DialogThemeData ) {
1529
+ throw ArgumentError ('dialogTheme must be either a DialogThemeData or a DialogTheme' );
1530
+ }
1531
+ }
1513
1532
return ThemeData .raw (
1514
1533
// For the sanity of the reader, make sure these properties are in the same
1515
1534
// order in every place that they are separated by section comments (e.g.
@@ -1571,7 +1590,7 @@ class ThemeData with Diagnosticable {
1571
1590
chipTheme: chipTheme ?? this .chipTheme,
1572
1591
dataTableTheme: dataTableTheme ?? this .dataTableTheme,
1573
1592
datePickerTheme: datePickerTheme ?? this .datePickerTheme,
1574
- dialogTheme: dialogTheme ?? this .dialogTheme,
1593
+ dialogTheme: dialogTheme as DialogThemeData ? ?? this .dialogTheme,
1575
1594
dividerTheme: dividerTheme ?? this .dividerTheme,
1576
1595
drawerTheme: drawerTheme ?? this .drawerTheme,
1577
1596
dropdownMenuTheme: dropdownMenuTheme ?? this .dropdownMenuTheme,
@@ -1764,7 +1783,7 @@ class ThemeData with Diagnosticable {
1764
1783
chipTheme: ChipThemeData .lerp (a.chipTheme, b.chipTheme, t)! ,
1765
1784
dataTableTheme: DataTableThemeData .lerp (a.dataTableTheme, b.dataTableTheme, t),
1766
1785
datePickerTheme: DatePickerThemeData .lerp (a.datePickerTheme, b.datePickerTheme, t),
1767
- dialogTheme: DialogTheme .lerp (a.dialogTheme, b.dialogTheme, t),
1786
+ dialogTheme: DialogThemeData .lerp (a.dialogTheme, b.dialogTheme, t),
1768
1787
dividerTheme: DividerThemeData .lerp (a.dividerTheme, b.dividerTheme, t),
1769
1788
drawerTheme: DrawerThemeData .lerp (a.drawerTheme, b.drawerTheme, t)! ,
1770
1789
dropdownMenuTheme: DropdownMenuThemeData .lerp (a.dropdownMenuTheme, b.dropdownMenuTheme, t),
@@ -2062,7 +2081,7 @@ class ThemeData with Diagnosticable {
2062
2081
properties.add (DiagnosticsProperty <ChipThemeData >('chipTheme' , chipTheme, level: DiagnosticLevel .debug));
2063
2082
properties.add (DiagnosticsProperty <DataTableThemeData >('dataTableTheme' , dataTableTheme, defaultValue: defaultData.dataTableTheme, level: DiagnosticLevel .debug));
2064
2083
properties.add (DiagnosticsProperty <DatePickerThemeData >('datePickerTheme' , datePickerTheme, defaultValue: defaultData.datePickerTheme, level: DiagnosticLevel .debug));
2065
- properties.add (DiagnosticsProperty <DialogTheme >('dialogTheme' , dialogTheme, defaultValue: defaultData.dialogTheme, level: DiagnosticLevel .debug));
2084
+ properties.add (DiagnosticsProperty <DialogThemeData >('dialogTheme' , dialogTheme, defaultValue: defaultData.dialogTheme, level: DiagnosticLevel .debug));
2066
2085
properties.add (DiagnosticsProperty <DividerThemeData >('dividerTheme' , dividerTheme, defaultValue: defaultData.dividerTheme, level: DiagnosticLevel .debug));
2067
2086
properties.add (DiagnosticsProperty <DrawerThemeData >('drawerTheme' , drawerTheme, defaultValue: defaultData.drawerTheme, level: DiagnosticLevel .debug));
2068
2087
properties.add (DiagnosticsProperty <DropdownMenuThemeData >('dropdownMenuTheme' , dropdownMenuTheme, defaultValue: defaultData.dropdownMenuTheme, level: DiagnosticLevel .debug));
0 commit comments