File tree Expand file tree Collapse file tree 3 files changed +49
-1
lines changed Expand file tree Collapse file tree 3 files changed +49
-1
lines changed Original file line number Diff line number Diff line change @@ -8,4 +8,5 @@ export 'src/flutter/scheduler_binding.dart';
8
8
export 'src/flutter/inherited_widget/signal.dart' ;
9
9
export 'src/flutter/inherited_widget/computed.dart' ;
10
10
export 'src/flutter/inherited_widget/readonly.dart' ;
11
- export 'src/flutter/inherited_widget/provider.dart' ;
11
+ export 'src/flutter/inherited_widget/provider.dart' ;
12
+ export 'src/extensions/untracked_value.dart' ;
Original file line number Diff line number Diff line change
1
+ import 'package:signals_core/signals_core.dart' ;
2
+
3
+ /// Signal extensions
4
+ extension ReadonlySignalUntrackedValueUtils <T > on ReadonlySignal <T > {
5
+ /// Runs a callback function that returns the signal value without
6
+ /// subscribing to the signal updates.
7
+ ///
8
+ /// ```dart
9
+ /// final counter = signal(0);
10
+ /// final untrackedValue = counter.untrackedValue;
11
+ /// ```
12
+ T get untrackedValue => untracked (() => value);
13
+ }
Original file line number Diff line number Diff line change
1
+ import 'package:flutter_test/flutter_test.dart' ;
2
+ import 'package:signals_flutter/extended.dart' ;
3
+ import 'package:signals_flutter/signals_flutter.dart' ;
4
+
5
+ void main () {
6
+ SignalsObserver .instance = null ;
7
+ group ('untrackedValue' , () {
8
+ test ('single' , () {
9
+ final s = signal (0 );
10
+ int calls = 0 ;
11
+ final dis = effect (() {
12
+ s.value;
13
+ s.untrackedValue + 1 ;
14
+ calls++ ;
15
+ });
16
+ dis ();
17
+
18
+ expect (calls, 1 );
19
+ });
20
+
21
+ test ('nested' , () {
22
+ final s = signal (0 );
23
+ int calls = 0 ;
24
+ final dis = effect (() {
25
+ s.value;
26
+ untracked (() => s.untrackedValue + 1 );
27
+ calls++ ;
28
+ });
29
+ dis ();
30
+
31
+ expect (calls, 1 );
32
+ });
33
+ });
34
+ }
You can’t perform that action at this time.
0 commit comments