File tree Expand file tree Collapse file tree
packages/flutter_solidart Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ ## 2.3.1
2+
3+ - ** FIX** : ` SignalBuilder ` rebuilded twice when a signal changed, added unit test to prevent this from happening again.
4+
15## 2.3.0
26
37### Changes from solidart
Original file line number Diff line number Diff line change @@ -108,6 +108,7 @@ class SignalBuilderElement extends ComponentElement {
108108 Effect ? _effect;
109109
110110 SignalBuilder get _widget => widget as SignalBuilder ;
111+ Widget ? _builtWidget;
111112
112113 @override
113114 void mount (Element ? parent, Object ? newSlot) {
@@ -142,7 +143,7 @@ class SignalBuilderElement extends ComponentElement {
142143 Future <void > _invalidate () async {
143144 // // if the element is already dirty, we don't need to ask another rebuild
144145 if (dirty) return ;
145- _widget.build (_parent! );
146+ _builtWidget = _widget.build (_parent! );
146147
147148 if (_shouldWaitScheduler) {
148149 await SchedulerBinding .instance.endOfFrame;
@@ -166,7 +167,7 @@ class SignalBuilderElement extends ComponentElement {
166167 reactiveSystem.activeSub = _effect? .subscriber;
167168
168169 try {
169- return _widget.build (_parent! );
170+ return _builtWidget ?? = _widget.build (_parent! );
170171 } finally {
171172 reactiveSystem.activeSub = prevSub;
172173 }
Original file line number Diff line number Diff line change 11name : flutter_solidart
22description : A simple State Management solution for Flutter applications inspired by SolidJS
3- version : 2.3.0
3+ version : 2.3.1
44repository : https://github.com/nank1ro/solidart
55documentation : https://solidart.mariuti.com
66topics :
Original file line number Diff line number Diff line change @@ -258,11 +258,13 @@ void main() {
258258
259259 testWidgets ('SignalBuilder works properly (1 Signal)' , (tester) async {
260260 final s = Signal (0 );
261+ var buildsCount = 0 ;
261262 await tester.pumpWidget (
262263 MaterialApp (
263264 home: Scaffold (
264265 body: SignalBuilder (
265266 builder: (context, child) {
267+ buildsCount++ ;
266268 return Text (s.value.toString ());
267269 },
268270 ),
@@ -272,9 +274,17 @@ void main() {
272274 Finder dataFinder (int value) => find.text ('$value ' );
273275
274276 expect (dataFinder (0 ), findsOneWidget);
277+ expect (buildsCount, 1 );
278+
275279 s.value++ ;
276280 await tester.pumpAndSettle ();
277281 expect (dataFinder (1 ), findsOneWidget);
282+ expect (buildsCount, 2 );
283+
284+ s.value++ ;
285+ await tester.pumpAndSettle ();
286+ expect (dataFinder (2 ), findsOneWidget);
287+ expect (buildsCount, 3 );
278288 });
279289
280290 testWidgets ('SignalBuilder works properly (2 Signals)' , (tester) async {
You can’t perform that action at this time.
0 commit comments