@@ -7,48 +7,83 @@ void main() {
77 final alignToggleIndicatorFinder = find.byWidgetPredicate (
88 (widget) => widget is Align && widget.child is Container );
99
10- testWidgets (
11- "displays the toggle indicator on the right if the given value is true" ,
12- (WidgetTester tester) async {
13- await tester.pumpWidget (
14- _FlutterSwitchTestbed (
15- value: true ,
16- ),
17- );
10+ group ("FlutterSwitch" , () {
11+ testWidgets (
12+ "displays the toggle indicator on the right if the given value is true" ,
13+ (WidgetTester tester) async {
14+ await tester.pumpWidget (
15+ _FlutterSwitchTestbed (
16+ value: true ,
17+ ),
18+ );
1819
19- final align = tester.widget <Align >(alignToggleIndicatorFinder);
20+ final align = tester.widget <Align >(alignToggleIndicatorFinder);
2021
21- expect (align.alignment, equals (Alignment .centerRight));
22- },
23- );
22+ expect (align.alignment, equals (Alignment .centerRight));
23+ },
24+ );
2425
25- testWidgets (
26- "displays the toggle indicator on the left if the given value is false" ,
27- (WidgetTester tester) async {
28- await tester.pumpWidget (
29- _FlutterSwitchTestbed (
30- value: false ,
31- ),
32- );
26+ testWidgets (
27+ "displays the toggle indicator on the left if the given value is false" ,
28+ (WidgetTester tester) async {
29+ await tester.pumpWidget (
30+ _FlutterSwitchTestbed (
31+ value: false ,
32+ ),
33+ );
34+
35+ final align = tester.widget <Align >(alignToggleIndicatorFinder);
36+
37+ expect (align.alignment, equals (Alignment .centerLeft));
38+ },
39+ );
40+
41+ testWidgets (
42+ "changes the toggle indicator alignment to the right on tap when the given value is false" ,
43+ (WidgetTester tester) async {
44+ await tester.pumpWidget (
45+ _FlutterSwitchTestbed (
46+ value: false ,
47+ ),
48+ );
49+
50+ await tester.tap (find.byType (GestureDetector ));
51+ await tester.pump ();
52+
53+ final align = tester.widget <Align >(alignToggleIndicatorFinder);
54+
55+ expect (align.alignment, equals (Alignment .centerLeft));
56+ },
57+ );
58+
59+ testWidgets (
60+ "changes the toggle indicator alignment to the left on tap when the given value is true" ,
61+ (WidgetTester tester) async {
62+ await tester.pumpWidget (
63+ _FlutterSwitchTestbed (
64+ value: true ,
65+ ),
66+ );
67+
68+ await tester.tap (find.byType (GestureDetector ));
69+ await tester.pumpAndSettle ();
3370
34- final align = tester.widget <Align >(alignToggleIndicatorFinder);
71+ final align = tester.widget <Align >(alignToggleIndicatorFinder);
3572
36- expect (align.alignment, equals (Alignment .centerLeft));
37- },
38- );
73+ expect (align.alignment, equals (Alignment .centerLeft));
74+ },
75+ );
76+ });
3977}
4078
41- /// A testbed needed to test the switch widget.
79+ /// A testbed class needed to test the [FlutterSwitch] widget.
4280class _FlutterSwitchTestbed extends StatelessWidget {
4381 /// A callback that is called when the switch is toggled.
4482 final ValueChanged <bool > onToggle;
4583
4684 /// An initial value of the switch.
4785 final bool value;
4886
49- /// A default on toggle callback of the switch.
50- static void _defaultOnToggle (bool value) {}
51-
5287 /// Creates a new instance of this testbed.
5388 const _FlutterSwitchTestbed ({
5489 Key key,
@@ -62,9 +97,12 @@ class _FlutterSwitchTestbed extends StatelessWidget {
6297 home: Scaffold (
6398 body: FlutterSwitch (
6499 value: value,
65- onToggle: (value) => {} ,
100+ onToggle: onToggle ,
66101 ),
67102 ),
68103 );
69104 }
105+
106+ /// A default on toggle callback of the switch.
107+ static void _defaultOnToggle (bool value) {}
70108}
0 commit comments