From 912c142ed29d7ccbab91af4df88f0deb6e016689 Mon Sep 17 00:00:00 2001 From: Alexandru Mariuti Date: Fri, 29 Aug 2025 16:17:42 +0200 Subject: [PATCH 1/6] feat: allow extending signals --- .../lib/src/core/collections/list.dart | 38 +++----- .../lib/src/core/collections/map.dart | 39 +++------ .../lib/src/core/collections/set.dart | 38 +++----- packages/solidart/lib/src/core/computed.dart | 37 ++------ .../solidart/lib/src/core/read_signal.dart | 81 ++++++++--------- packages/solidart/lib/src/core/resource.dart | 87 +++++++------------ packages/solidart/lib/src/core/signal.dart | 74 ++++------------ 7 files changed, 132 insertions(+), 262 deletions(-) diff --git a/packages/solidart/lib/src/core/collections/list.dart b/packages/solidart/lib/src/core/collections/list.dart index 22bc54b5..54a6ef03 100644 --- a/packages/solidart/lib/src/core/collections/list.dart +++ b/packages/solidart/lib/src/core/collections/list.dart @@ -15,47 +15,29 @@ part of '../core.dart'; /// {@endtemplate} class ListSignal extends Signal> with ListMixin { /// {@macro list-signal} - factory ListSignal( + ListSignal( Iterable initialValue, { /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator?> comparator = identical, + super.comparator = identical, /// {@macro SignalBase.trackPreviousValue} - bool? trackPreviousValue, - }) { - return ListSignal._internal( - initialValue: initialValue.toList(), - name: name ?? ReactiveName.nameFor('ListSignal'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - comparator: comparator, - ); - } - - ListSignal._internal({ - required super.initialValue, - required super.name, - required super.equals, - required super.autoDispose, - required super.trackInDevTools, - required super.comparator, - required super.trackPreviousValue, - }) : super._internal(); + super.trackPreviousValue, + }) : super( + initialValue.toList(), + name: name ?? ReactiveName.nameFor('ListSignal'), + ); @override List _setValue(List newValue) { diff --git a/packages/solidart/lib/src/core/collections/map.dart b/packages/solidart/lib/src/core/collections/map.dart index e111eb7f..5344179c 100644 --- a/packages/solidart/lib/src/core/collections/map.dart +++ b/packages/solidart/lib/src/core/collections/map.dart @@ -15,47 +15,28 @@ part of '../core.dart'; /// {@endtemplate} class MapSignal extends Signal> with MapMixin { /// {@macro map-signal} - factory MapSignal( - Map initialValue, { + MapSignal( + super.initialValue, { /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator?> comparator = identical, + super.comparator = identical, /// {@macro SignalBase.trackPreviousValue} - bool? trackPreviousValue, - }) { - return MapSignal._internal( - initialValue: Map.of(initialValue), - name: name ?? ReactiveName.nameFor('MapSignal'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - comparator: comparator, - ); - } - - MapSignal._internal({ - required super.initialValue, - required super.name, - required super.equals, - required super.autoDispose, - required super.trackInDevTools, - required super.comparator, - required super.trackPreviousValue, - }) : super._internal(); + super.trackPreviousValue, + }) : super( + name: name ?? ReactiveName.nameFor('MapSignal'), + ); @override Map _setValue(Map newValue) { diff --git a/packages/solidart/lib/src/core/collections/set.dart b/packages/solidart/lib/src/core/collections/set.dart index 15c1ee6f..624b45f3 100644 --- a/packages/solidart/lib/src/core/collections/set.dart +++ b/packages/solidart/lib/src/core/collections/set.dart @@ -15,47 +15,29 @@ part of '../core.dart'; /// {@endtemplate} class SetSignal extends Signal> with SetMixin { /// {@macro set-signal} - factory SetSignal( + SetSignal( Iterable initialValue, { /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator?> comparator = identical, + super.comparator = identical, /// {@macro SignalBase.trackPreviousValue} - bool? trackPreviousValue, - }) { - return SetSignal._internal( - initialValue: initialValue.toSet(), - name: name ?? ReactiveName.nameFor('SetSignal'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - comparator: comparator, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - ); - } - - SetSignal._internal({ - required super.initialValue, - required super.name, - required super.equals, - required super.autoDispose, - required super.trackInDevTools, - required super.comparator, - required super.trackPreviousValue, - }) : super._internal(); + super.trackPreviousValue, + }) : super( + initialValue.toSet(), + name: name ?? ReactiveName.nameFor('SetSignal'), + ); @override Set _setValue(Set newValue) { diff --git a/packages/solidart/lib/src/core/computed.dart b/packages/solidart/lib/src/core/computed.dart index 82429a31..b4009908 100644 --- a/packages/solidart/lib/src/core/computed.dart +++ b/packages/solidart/lib/src/core/computed.dart @@ -52,47 +52,26 @@ part of 'core.dart'; /// {@endtemplate} class Computed extends ReadSignal { /// {@macro computed} - factory Computed( - T Function() selector, { + Computed( + this.selector, { /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator comparator = identical, + super.comparator = identical, /// {@macro SignalBase.trackPreviousValue} - bool? trackPreviousValue, - }) { - return Computed._internal( - selector: selector, - name: name ?? ReactiveName.nameFor('Computed'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - comparator: comparator, - ); - } - - Computed._internal({ - required this.selector, - required super.name, - required super.equals, - required super.autoDispose, - required super.trackInDevTools, - required super.comparator, - required super.trackPreviousValue, - }) { + super.trackPreviousValue, + }) : super(name: name ?? ReactiveName.nameFor('Computed')) { var runnedOnce = false; _internalComputed = _AlienComputed( this, diff --git a/packages/solidart/lib/src/core/read_signal.dart b/packages/solidart/lib/src/core/read_signal.dart index be84314a..7d477d33 100644 --- a/packages/solidart/lib/src/core/read_signal.dart +++ b/packages/solidart/lib/src/core/read_signal.dart @@ -25,7 +25,7 @@ abstract class ReadSignal extends SignalBase { /// {@endtemplate} class ReadableSignal implements ReadSignal { /// {@macro readsignal} - factory ReadableSignal( + ReadableSignal( T initialValue, { /// {@macro SignalBase.name} String? name, @@ -40,45 +40,48 @@ class ReadableSignal implements ReadSignal { bool? trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator comparator = identical, + this.comparator = identical, /// {@macro SignalBase.trackPreviousValue} bool? trackPreviousValue, - }) { - return ReadableSignal._internal( - initialValue: initialValue, - name: name ?? ReactiveName.nameFor('ReadSignal'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - comparator: comparator, - ); - } - - ReadableSignal._internal({ - required T initialValue, - required this.name, - required this.equals, - required this.autoDispose, - required this.trackInDevTools, - required this.comparator, - required this.trackPreviousValue, - }) : _hasValue = true { + }) : _hasValue = true, + trackInDevTools = trackInDevTools ?? SolidartConfig.devToolsEnabled, + autoDispose = autoDispose ?? SolidartConfig.autoDispose, + equals = equals ?? SolidartConfig.equals, + name = name ?? ReactiveName.nameFor('ReadSignal'), + trackPreviousValue = + trackPreviousValue ?? SolidartConfig.trackPreviousValue { _internalSignal = _AlienSignal(this, Some(initialValue)); _untrackedValue = initialValue; _notifySignalCreation(); } - ReadableSignal._internalLazy({ - required this.name, - required this.equals, - required this.autoDispose, - required this.trackInDevTools, - required this.comparator, - required this.trackPreviousValue, - }) : _hasValue = false { + /// {@macro readsignal} + ReadableSignal.lazy({ + /// {@macro SignalBase.name} + String? name, + + /// {@macro SignalBase.equals} + bool? equals, + + /// {@macro SignalBase.autoDispose} + bool? autoDispose, + + /// {@macro SignalBase.trackInDevTools} + bool? trackInDevTools, + + /// {@macro SignalBase.comparator} + this.comparator = identical, + + /// {@macro SignalBase.trackPreviousValue} + bool? trackPreviousValue, + }) : _hasValue = false, + trackInDevTools = trackInDevTools ?? SolidartConfig.devToolsEnabled, + autoDispose = autoDispose ?? SolidartConfig.autoDispose, + equals = equals ?? SolidartConfig.equals, + name = name ?? ReactiveName.nameFor('ReadSignal'), + trackPreviousValue = + trackPreviousValue ?? SolidartConfig.trackPreviousValue { _internalSignal = _AlienSignal(this, None()); } @@ -316,9 +319,9 @@ class ReadableSignal implements ReadSignal { /// Returns the future that completes when the [condition] evalutes to true. /// If the [condition] is already true, it completes immediately. - /// - /// The [timeout] parameter specifies the maximum time to wait for the - /// condition to be met. If provided and the timeout is reached before the + /// + /// The [timeout] parameter specifies the maximum time to wait for the + /// condition to be met. If provided and the timeout is reached before the /// condition is met, the future will complete with a [TimeoutException]. FutureOr until( bool Function(T value) condition, { @@ -329,12 +332,12 @@ class ReadableSignal implements ReadSignal { final completer = Completer(); Timer? timer; late final Effect effect; - + void dispose() { effect.dispose(); timer?.cancel(); } - + effect = Effect( () { if (condition(value)) { @@ -344,7 +347,7 @@ class ReadableSignal implements ReadSignal { }, autoDispose: false, ); - + // Start timeout timer if specified if (timeout != null) { timer = Timer(timeout, () { @@ -354,7 +357,7 @@ class ReadableSignal implements ReadSignal { } }); } - + return completer.future; } diff --git a/packages/solidart/lib/src/core/resource.dart b/packages/solidart/lib/src/core/resource.dart index d99601ca..6a1e1049 100644 --- a/packages/solidart/lib/src/core/resource.dart +++ b/packages/solidart/lib/src/core/resource.dart @@ -74,96 +74,75 @@ part of 'core.dart'; /// {@endtemplate} class Resource extends Signal> { /// {@macro resource} - factory Resource( - Future Function() fetcher, { - SignalBase? source, + Resource( + this.fetcher, { + this.source, /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// Indicates whether the resource should be computed lazily, defaults to /// true. - bool lazy = true, + this.lazy = true, /// {@macro Resource.useRefreshing} bool? useRefreshing, - }) { - return Resource._internal( - fetcher: fetcher, - source: source, - name: name ?? ReactiveName.nameFor('Resource'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - lazy: lazy, - useRefreshing: useRefreshing ?? SolidartConfig.useRefreshing, - ); + + /// Whether to track the previous state of the resource, defaults to true. + bool? trackPreviousState, + }) : useRefreshing = useRefreshing ?? SolidartConfig.useRefreshing, + stream = null, + super( + ResourceState.loading(), + name: name ?? ReactiveName.nameFor('Resource'), + trackPreviousValue: + trackPreviousState ?? SolidartConfig.trackPreviousValue, + comparator: identical, + ) { + // resolve the resource immediately if not lazy + if (!lazy) _resolve(); } /// {@macro resource} - factory Resource.stream( - Stream Function() stream, { - SignalBase? source, + Resource.stream( + this.stream, { + this.source, /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// Indicates whether the resource should be computed lazily, defaults to /// true. - bool lazy = true, + this.lazy = true, /// {@macro Resource.useRefreshing} bool? useRefreshing, - }) { - return Resource._internal( - stream: stream, - source: source, - name: name ?? ReactiveName.nameFor('Resource'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - lazy: lazy, - useRefreshing: useRefreshing ?? SolidartConfig.useRefreshing, - ); - } - - Resource._internal({ - required super.name, - required super.equals, - required this.lazy, - required super.autoDispose, - required super.trackInDevTools, - required this.useRefreshing, /// Whether to track the previous state of the resource, defaults to true. bool? trackPreviousState, - this.fetcher, - this.stream, - this.source, - }) : assert( - (fetcher != null) ^ (stream != null), - 'Provide a fetcher or a stream', - ), - super._internal( - initialValue: ResourceState.loading(), + }) : useRefreshing = useRefreshing ?? SolidartConfig.useRefreshing, + fetcher = null, + super( + ResourceState.loading(), + name: name ?? ReactiveName.nameFor('Resource'), trackPreviousValue: trackPreviousState ?? SolidartConfig.trackPreviousValue, comparator: identical, diff --git a/packages/solidart/lib/src/core/signal.dart b/packages/solidart/lib/src/core/signal.dart index d65daefe..7f375a43 100644 --- a/packages/solidart/lib/src/core/signal.dart +++ b/packages/solidart/lib/src/core/signal.dart @@ -103,91 +103,55 @@ part of 'core.dart'; /// {@endtemplate} class Signal extends ReadableSignal { /// {@macro signal} - factory Signal( - T initialValue, { + Signal( + super.initialValue, { /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator comparator = identical, + super.comparator = identical, /// {@macro SignalBase.trackPreviousValue} - bool? trackPreviousValue, - }) { - return Signal._internal( - initialValue: initialValue, - name: name ?? ReactiveName.nameFor('Signal'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - comparator: comparator, - ); - } + super.trackPreviousValue, + }) : super( + name: name ?? ReactiveName.nameFor('Signal'), + ); /// {@macro signal} /// /// This is a lazy signal, it doesn't have a value at the moment of creation. /// But would throw a StateError if you try to access the value before setting /// one. - factory Signal.lazy({ + Signal.lazy({ /// {@macro SignalBase.name} String? name, /// {@macro SignalBase.equals} - bool? equals, + super.equals, /// {@macro SignalBase.autoDispose} - bool? autoDispose, + super.autoDispose, /// {@macro SignalBase.trackInDevTools} - bool? trackInDevTools, + super.trackInDevTools, /// {@macro SignalBase.comparator} - ValueComparator comparator = identical, + super.comparator = identical, /// {@macro SignalBase.trackPreviousValue} - bool? trackPreviousValue, - }) { - return Signal._internalLazy( - name: name ?? ReactiveName.nameFor('Signal'), - equals: equals ?? SolidartConfig.equals, - autoDispose: autoDispose ?? SolidartConfig.autoDispose, - trackInDevTools: trackInDevTools ?? SolidartConfig.devToolsEnabled, - trackPreviousValue: - trackPreviousValue ?? SolidartConfig.trackPreviousValue, - comparator: comparator, - ); - } - - Signal._internal({ - required super.initialValue, - required super.name, - required super.equals, - required super.autoDispose, - required super.trackInDevTools, - required super.comparator, - required super.trackPreviousValue, - }) : super._internal(); - - Signal._internalLazy({ - required super.name, - required super.equals, - required super.autoDispose, - required super.trackInDevTools, - required super.comparator, - required super.trackPreviousValue, - }) : super._internalLazy(); + super.trackPreviousValue, + }) : super.lazy( + name: name ?? ReactiveName.nameFor('Signal'), + ); /// {@macro set-signal-value} set value(T newValue) => _setValue(newValue); From acf3992071913a4f198725a5d16efd7f4ce2fb1d Mon Sep 17 00:00:00 2001 From: Alexandru Mariuti Date: Fri, 29 Aug 2025 16:21:10 +0200 Subject: [PATCH 2/6] chore: bump versions --- packages/flutter_solidart/CHANGELOG.md | 6 ++++++ packages/flutter_solidart/pubspec.yaml | 4 ++-- packages/solidart/CHANGELOG.md | 4 ++++ packages/solidart/pubspec.yaml | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/flutter_solidart/CHANGELOG.md b/packages/flutter_solidart/CHANGELOG.md index 10c5a9c0..34694bad 100644 --- a/packages/flutter_solidart/CHANGELOG.md +++ b/packages/flutter_solidart/CHANGELOG.md @@ -1,3 +1,9 @@ +## 2.2.0 + +### Changes from solidart + +- **FEAT**: Allow extending signal, computed, resource, list-signal, set-signal and map-signal. + ## 2.1.0 ### Changes from solidart diff --git a/packages/flutter_solidart/pubspec.yaml b/packages/flutter_solidart/pubspec.yaml index 1aeeaec5..73aaa322 100644 --- a/packages/flutter_solidart/pubspec.yaml +++ b/packages/flutter_solidart/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_solidart description: A simple State Management solution for Flutter applications inspired by SolidJS -version: 2.1.0 +version: 2.2.0 repository: https://github.com/nank1ro/solidart documentation: https://solidart.mariuti.com topics: @@ -18,7 +18,7 @@ dependencies: flutter: sdk: flutter meta: ^1.11.0 - solidart: ^2.2.0 + solidart: ^2.3.0 dev_dependencies: disco: ^1.0.0 diff --git a/packages/solidart/CHANGELOG.md b/packages/solidart/CHANGELOG.md index 074a95f7..55cb5db1 100644 --- a/packages/solidart/CHANGELOG.md +++ b/packages/solidart/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.3.0 + +- **FEAT**: Allow extending signal, computed, resource, list-signal, set-signal and map-signal. + ## 2.2.0 - **FEAT**: Add `timeout` parameter to `Signal.until` method to specify a timeout duration. If the condition is not met within the specified duration, the returned future will complete with a `TimeoutException`. diff --git a/packages/solidart/pubspec.yaml b/packages/solidart/pubspec.yaml index 20fe2bcd..389a41b9 100644 --- a/packages/solidart/pubspec.yaml +++ b/packages/solidart/pubspec.yaml @@ -1,6 +1,6 @@ name: solidart description: A simple State Management solution for Dart applications inspired by SolidJS -version: 2.2.0 +version: 2.3.0 repository: https://github.com/nank1ro/solidart documentation: https://solidart.mariuti.com topics: From fd3ac7776dd1c46271d2f33e58fe7b309aa18210 Mon Sep 17 00:00:00 2001 From: Alexandru Mariuti Date: Fri, 29 Aug 2025 16:23:45 +0200 Subject: [PATCH 3/6] chore: add unit test for signal name --- packages/solidart/test/solidart_test.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/solidart/test/solidart_test.dart b/packages/solidart/test/solidart_test.dart index 42df3cfd..20125847 100644 --- a/packages/solidart/test/solidart_test.dart +++ b/packages/solidart/test/solidart_test.dart @@ -293,6 +293,11 @@ void main() { expect(s.toString(), startsWith('Signal(value: 0')); }); + test('check custom name', () { + final s = Signal(0, name: 'custom-name'); + expect(s.name, 'custom-name'); + }); + test('check Signal becomes ReadSignal', () { final s = Signal(0); expect(s, const TypeMatcher>()); From a7b9d4930f3775196efad6bbe71eb794afab63b3 Mon Sep 17 00:00:00 2001 From: Alexandru Mariuti Date: Fri, 29 Aug 2025 16:27:36 +0200 Subject: [PATCH 4/6] chore: add unit test --- packages/solidart/test/solidart_test.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/solidart/test/solidart_test.dart b/packages/solidart/test/solidart_test.dart index 20125847..d8797b05 100644 --- a/packages/solidart/test/solidart_test.dart +++ b/packages/solidart/test/solidart_test.dart @@ -298,6 +298,11 @@ void main() { expect(s.name, 'custom-name'); }); + test('check custom name when lazy', () { + final s = Signal.lazy(name: 'lazy-custom-name'); + expect(s.name, 'lazy-custom-name'); + }); + test('check Signal becomes ReadSignal', () { final s = Signal(0); expect(s, const TypeMatcher>()); From 7726265fb04e52ae92015a02d0d35c2823aa4ce6 Mon Sep 17 00:00:00 2001 From: Alexandru Mariuti Date: Fri, 29 Aug 2025 17:16:10 +0200 Subject: [PATCH 5/6] chore: update tests --- packages/solidart/test/solidart_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/solidart/test/solidart_test.dart b/packages/solidart/test/solidart_test.dart index d8797b05..0e3d5881 100644 --- a/packages/solidart/test/solidart_test.dart +++ b/packages/solidart/test/solidart_test.dart @@ -294,12 +294,12 @@ void main() { }); test('check custom name', () { - final s = Signal(0, name: 'custom-name'); + final s = ReadableSignal(0, name: 'custom-name'); expect(s.name, 'custom-name'); }); test('check custom name when lazy', () { - final s = Signal.lazy(name: 'lazy-custom-name'); + final s = ReadableSignal.lazy(name: 'lazy-custom-name'); expect(s.name, 'lazy-custom-name'); }); From 2e08a54c306dc8ec24aa8f339e2058976f418bee Mon Sep 17 00:00:00 2001 From: Alexandru Mariuti Date: Fri, 29 Aug 2025 17:42:24 +0200 Subject: [PATCH 6/6] chore: add coverage ignore --- packages/solidart/lib/src/core/read_signal.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/solidart/lib/src/core/read_signal.dart b/packages/solidart/lib/src/core/read_signal.dart index 7d477d33..f7b478dc 100644 --- a/packages/solidart/lib/src/core/read_signal.dart +++ b/packages/solidart/lib/src/core/read_signal.dart @@ -79,7 +79,9 @@ class ReadableSignal implements ReadSignal { trackInDevTools = trackInDevTools ?? SolidartConfig.devToolsEnabled, autoDispose = autoDispose ?? SolidartConfig.autoDispose, equals = equals ?? SolidartConfig.equals, + // coverage:ignore-start name = name ?? ReactiveName.nameFor('ReadSignal'), + // coverage:ignore-end trackPreviousValue = trackPreviousValue ?? SolidartConfig.trackPreviousValue { _internalSignal = _AlienSignal(this, None());