@@ -26,11 +26,25 @@ void main() {
2626 await tester.pump ();
2727 }
2828
29- group ('ThemeSetting' , () {
30- Finder findRadioListTileWithTitle (String title) => find.ancestor (
31- of: find.text (title),
32- matching: find.byType (RadioListTile <ThemeSetting ?>));
29+ Finder findRadioListTileWithTitle <T >(String title) => find.ancestor (
30+ of: find.text (title),
31+ matching: find.byType (RadioListTile <T >));
32+
33+ void checkRadioButtonAppearsChecked <T >(WidgetTester tester, String title, bool expectedIsChecked) {
34+ final element = tester.element (findRadioListTileWithTitle <T >(title));
35+ final checkedColor = Theme .of (element).colorScheme.primary;
36+ // `paints` isn't a [Matcher] so we wrap it with `equals`;
37+ // awkward but it works
38+ final paintsAsCheckedMatcher = equals (paints..circle (color: checkedColor));
39+ check (because: '$title should be ${expectedIsChecked ? 'checked' : 'unchecked' }' ,
40+ element.renderObject,
41+ ).legacyMatcher (
42+ expectedIsChecked
43+ ? paintsAsCheckedMatcher
44+ : isNot (paintsAsCheckedMatcher));
45+ }
3346
47+ group ('ThemeSetting' , () {
3448 void checkThemeSetting (WidgetTester tester, {
3549 required ThemeSetting ? expectedThemeSetting,
3650 }) {
@@ -40,18 +54,7 @@ void main() {
4054 ThemeSetting .dark => 'Dark' ,
4155 };
4256 for (final title in ['System' , 'Light' , 'Dark' ]) {
43- final expectedIsChecked = title == expectedCheckedTitle;
44- final element = tester.element (findRadioListTileWithTitle (title));
45- final checkedColor = Theme .of (element).colorScheme.primary;
46- // `paints` isn't a [Matcher] so we wrap it with `equals`;
47- // awkward but it works
48- final paintsAsCheckedMatcher = equals (paints..circle (color: checkedColor));
49- check (because: '$title should be ${expectedIsChecked ? 'checked' : 'unchecked' }' ,
50- element.renderObject,
51- ).legacyMatcher (
52- expectedIsChecked
53- ? paintsAsCheckedMatcher
54- : isNot (paintsAsCheckedMatcher));
57+ checkRadioButtonAppearsChecked <ThemeSetting ?>(tester, title, title == expectedCheckedTitle);
5558 }
5659 check (testBinding.globalStore)
5760 .settings.themeSetting.equals (expectedThemeSetting);
@@ -66,13 +69,13 @@ void main() {
6669 check (Theme .of (element)).brightness.equals (Brightness .light);
6770 checkThemeSetting (tester, expectedThemeSetting: ThemeSetting .light);
6871
69- await tester.tap (findRadioListTileWithTitle ('Dark' ));
72+ await tester.tap (findRadioListTileWithTitle < ThemeSetting ?> ('Dark' ));
7073 await tester.pump ();
7174 await tester.pump (Duration (milliseconds: 250 )); // wait for transition
7275 check (Theme .of (element)).brightness.equals (Brightness .dark);
7376 checkThemeSetting (tester, expectedThemeSetting: ThemeSetting .dark);
7477
75- await tester.tap (findRadioListTileWithTitle ('System' ));
78+ await tester.tap (findRadioListTileWithTitle < ThemeSetting ?> ('System' ));
7679 await tester.pump ();
7780 await tester.pump (Duration (milliseconds: 250 )); // wait for transition
7881 check (Theme .of (element)).brightness.equals (Brightness .light);
0 commit comments