@@ -1284,6 +1284,102 @@ void main() {
1284
1284
// Ensure they are all there.
1285
1285
expect (propertyNames, expectedPropertyNames);
1286
1286
});
1287
+
1288
+ testWidgetsWithLeakTracking (
1289
+ 'ThemeData.brightness not matching ColorScheme.brightness throws a helpful error message' , (WidgetTester tester) async {
1290
+ AssertionError ? error;
1291
+
1292
+ // Test `ColorScheme.light()` and `ThemeData.brightness == Brightness.dark`.
1293
+ try {
1294
+ await tester.pumpWidget (
1295
+ MaterialApp (
1296
+ theme: ThemeData (
1297
+ colorScheme: const ColorScheme .light (),
1298
+ brightness: Brightness .dark,
1299
+ ),
1300
+ home: const Placeholder (),
1301
+ ),
1302
+ );
1303
+ } on AssertionError catch (e) {
1304
+ error = e;
1305
+ } finally {
1306
+ expect (error, isNotNull);
1307
+ expect (error? .message, contains (
1308
+ 'ThemeData.brightness does not match ColorScheme.brightness. '
1309
+ 'Either override ColorScheme.brightness or ThemeData.brightness to '
1310
+ 'match the other.'
1311
+ ));
1312
+ }
1313
+
1314
+ // Test `ColorScheme.dark()` and `ThemeData.brightness == Brightness.light`.
1315
+ try {
1316
+ await tester.pumpWidget (
1317
+ MaterialApp (
1318
+ theme: ThemeData (
1319
+ colorScheme: const ColorScheme .dark (),
1320
+ brightness: Brightness .light,
1321
+ ),
1322
+ home: const Placeholder (),
1323
+ ),
1324
+ );
1325
+ } on AssertionError catch (e) {
1326
+ error = e;
1327
+ } finally {
1328
+ expect (error, isNotNull);
1329
+ expect (error? .message, contains (
1330
+ 'ThemeData.brightness does not match ColorScheme.brightness. '
1331
+ 'Either override ColorScheme.brightness or ThemeData.brightness to '
1332
+ 'match the other.'
1333
+ ));
1334
+ }
1335
+
1336
+ // Test `ColorScheme.fromSeed()` and `ThemeData.brightness == Brightness.dark`.
1337
+ try {
1338
+ await tester.pumpWidget (
1339
+ MaterialApp (
1340
+ theme: ThemeData (
1341
+ colorScheme: ColorScheme .fromSeed (seedColor: const Color (0xffff0000 )),
1342
+ brightness: Brightness .dark,
1343
+ ),
1344
+ home: const Placeholder (),
1345
+ ),
1346
+ );
1347
+ } on AssertionError catch (e) {
1348
+ error = e;
1349
+ } finally {
1350
+ expect (error, isNotNull);
1351
+ expect (error? .message, contains (
1352
+ 'ThemeData.brightness does not match ColorScheme.brightness. '
1353
+ 'Either override ColorScheme.brightness or ThemeData.brightness to '
1354
+ 'match the other.'
1355
+ ));
1356
+ }
1357
+
1358
+ // Test `ColorScheme.fromSeed()` using `Brightness.dark` and `ThemeData.brightness == Brightness.light`.
1359
+ try {
1360
+ await tester.pumpWidget (
1361
+ MaterialApp (
1362
+ theme: ThemeData (
1363
+ colorScheme: ColorScheme .fromSeed (
1364
+ seedColor: const Color (0xffff0000 ),
1365
+ brightness: Brightness .dark,
1366
+ ),
1367
+ brightness: Brightness .light,
1368
+ ),
1369
+ home: const Placeholder (),
1370
+ ),
1371
+ );
1372
+ } on AssertionError catch (e) {
1373
+ error = e;
1374
+ } finally {
1375
+ expect (error, isNotNull);
1376
+ expect (error? .message, contains (
1377
+ 'ThemeData.brightness does not match ColorScheme.brightness. '
1378
+ 'Either override ColorScheme.brightness or ThemeData.brightness to '
1379
+ 'match the other.'
1380
+ ));
1381
+ }
1382
+ });
1287
1383
}
1288
1384
1289
1385
@immutable
0 commit comments