@@ -59,45 +59,49 @@ void main() {
59
59
expect (renderCount, equals (1 ));
60
60
});
61
61
62
- testWidgets ("Observer.withBuiltChild's child doesn't re-render" , (tester) async {
62
+ testWidgets ("Observer.withBuiltChild's child doesn't re-render" ,
63
+ (tester) async {
63
64
final message = Observable ('Click' );
64
- final key1 = UniqueKey ();
65
- final key2 = UniqueKey ();
66
- final key3 = UniqueKey ();
67
-
68
- await tester.pumpWidget (
69
- MaterialApp (
70
- home: Observer .withBuiltChild (
71
- builderWithChild: (context, child) {
72
- return Column (
73
- children: [
74
- ElevatedButton (onPressed: () => message.value = 'Clicked' , child: Container ()),
75
- Text (message.value, key: key1),
76
- child! ,
77
- Builder (
78
- builder: (context) {
79
- return Text (message.value, key: key3);
80
- }
81
- ),
82
- ],
83
- );
84
- },
85
- child: Text (message.value, key: key2),
86
- ),
87
- ),
88
- );
89
-
90
- expect (tester.widget <Text >(find.byKey (key1)).data, equals ('Click' ));
91
- expect (tester.widget <Text >(find.byKey (key2)).data, equals ('Click' ));
92
- expect (tester.widget <Text >(find.byKey (key3)).data, equals ('Click' ));
93
-
94
- await tester.tap (find.byType (ElevatedButton ));
95
- expect (message.value, equals ('Clicked' ));
96
-
97
- await tester.pump ();
98
- expect (tester.widget <Text >(find.byKey (key1)).data, equals ('Clicked' )); // Observer rebuilt the Text1
99
- expect (tester.widget <Text >(find.byKey (key2)).data, equals ('Click' )); // child Text2 did not change
100
- expect (tester.widget <Text >(find.byKey (key3)).data, equals ('Clicked' )); // Builder does not preserve from rebuild
65
+ final key1 = UniqueKey ();
66
+ final key2 = UniqueKey ();
67
+ final key3 = UniqueKey ();
68
+
69
+ await tester.pumpWidget (
70
+ MaterialApp (
71
+ home: Observer .withBuiltChild (
72
+ builderWithChild: (context, child) {
73
+ return Column (
74
+ children: [
75
+ ElevatedButton (
76
+ onPressed: () => message.value = 'Clicked' ,
77
+ child: Container ()),
78
+ Text (message.value, key: key1),
79
+ child! ,
80
+ Builder (builder: (context) {
81
+ return Text (message.value, key: key3);
82
+ }),
83
+ ],
84
+ );
85
+ },
86
+ child: Text (message.value, key: key2),
87
+ ),
88
+ ),
89
+ );
90
+
91
+ expect (tester.widget <Text >(find.byKey (key1)).data, equals ('Click' ));
92
+ expect (tester.widget <Text >(find.byKey (key2)).data, equals ('Click' ));
93
+ expect (tester.widget <Text >(find.byKey (key3)).data, equals ('Click' ));
94
+
95
+ await tester.tap (find.byType (ElevatedButton ));
96
+ expect (message.value, equals ('Clicked' ));
97
+
98
+ await tester.pump ();
99
+ expect (tester.widget <Text >(find.byKey (key1)).data,
100
+ equals ('Clicked' )); // Observer rebuilt the Text1
101
+ expect (tester.widget <Text >(find.byKey (key2)).data,
102
+ equals ('Click' )); // child Text2 did not change
103
+ expect (tester.widget <Text >(find.byKey (key3)).data,
104
+ equals ('Clicked' )); // Builder does not preserve from rebuild
101
105
});
102
106
103
107
testWidgets ('Observer build should call reaction.track' , (tester) async {
0 commit comments