PackageTrack
Sign in Get early access

flutter_solidart

A simple State Management solution for Flutter applications inspired by SolidJS

2.7.4 4.1K downloads/mo #4149 most downloaded on pub.dev nank1ro/solidart

What this package is like to depend on

Last release 1 months ago

30 Jun 2026

Release timing varies

gaps range from 8 days to 5 months

Nearly every release is documented

notes for 53 of 53 stable releases

Nothing withdrawn

no release was ever pulled

4 years old

71 releases · first in 2023

16 releases in the last 12 months

see the full history below

Release timeline

71 releases · Jan 2023 to Jun 2026
2024 2025 2026
Release Pre-release

Releases

latest 60 of 71
  1. 3.0.0-dev.1 30 Jun 2026 pre-release
    Release notes
    • BREAKING: Inherits solidart's auto-dispose change — auto-dispose is now opt-in (SolidartConfig.autoDispose defaults to false).
    • CHORE: Require solidart: ^3.0.0-dev.1 (the alien_signals 2.3.1 reactive adapter).
    • REFACTOR: Route SignalBuilder through the reactive sub helper (setCurrentSub) instead of assigning activeSub directly.
    • CHORE: Consume solidart's reactiveSystem via package:solidart/solidart_internal.dart now that it is no longer part of solidart's public barrel.
    Open source →
    Release notes
    • BREAKING: Inherits solidart's auto-dispose change — auto-dispose is now opt-in (SolidartConfig.autoDispose defaults to false).
    • CHORE: Require solidart: ^3.0.0-dev.1 (the alien_signals 2.3.1 reactive adapter).
    • REFACTOR: Route SignalBuilder through the reactive sub helper (setCurrentSub) instead of assigning activeSub directly.
    • CHORE: Consume solidart's reactiveSystem via package:solidart/solidart_internal.dart now that it is no longer part of solidart's public barrel.
    Open source →
  2. 2.7.4 21 May 2026
    Release notes

    What's Changed

    Full Changelog: flutter_solidart-v2.7.3...flutter_solidart-v2.7.4

    Open source →
    Release notes

    Changes from solidart

    • FIX: Prevent effect re-entrancy when a signal is written during the effect's first run. The write no longer re-enters the running effect mid-execution, which could throw LateInitializationError.
    Open source →
  3. 2.7.3 14 Apr 2026
    Release notes

    What's Changed

    • Computed.untrackedValue is not up to date by @nank1ro in #172

    Full Changelog: flutter_solidart-v2.7.2...flutter_solidart-v2.7.3

    Open source →
    Release notes

    Changes from solidart

    • FIX: Return up-to-date value from Computed.untrackedValue after dependency changes.
    Open source →
  4. 2.7.2 13 Apr 2026
    Release notes

    Changes from solidart

    • FIX: Prevent LateInitializationError when accessing Computed.untrackedValue before first value access.
    Open source →
  5. 2.7.1 04 Nov 2025
    Release notes

    Changes from solidart

    • FIX: Expose until method for Computed.
    Open source →
  6. 2.7.0 23 Oct 2025
    Release notes

    Changes from solidart

    • REFACTOR: Deprecate maybeOn and on methods of ResourceState. Use maybeWhen and when instead.
    Open source →
  7. 2.6.1 07 Oct 2025
    Release notes
    • CHORE: Bump solidart dependency to ^2.7.1.
    Open source →
  8. 2.6.0 07 Oct 2025
    Release notes
    • FEAT: Export Signal and Resource by implementing ValueNotifier and ReadableSignal, Computed by implementing ValueListenable.
    Open source →
  9. 2.5.0 19 Sep 2025
    Release notes
    • REFACTOR: Improve and simplify the SignalBuilder implementation (thanks to @medz).
    • FEAT: Add assertSignalBuilderWithoutDependencies to SolidartConfig to manually disable the assertion thrown when a SignalBuilder doesn't track any reactive value. (By default it's true, so it will raise an assertion).

    Changes from solidart

    • REFACTOR: Make auto disposal synchronous.
    Open source →
  10. 2.4.1 17 Sep 2025
    Release notes
    • FIX: SignalBuilder not working with inherited widgets. This is just a temporary patch, a better solution needs to be found, because inherited widgets tracked inside the builder won't react.
    Open source →
  11. 2.4.0 10 Sep 2025
    Release notes
    • CHORE: Detect if SignalBuilder didn't track any reactive value and throw a SignalBuilderWithoutDependenciesError.

    Changes from solidart

    • FEAT: Add run method to Computed to manually trigger an update of its value.
    • FEAT: Add run method to Effect to manually re-run the effect.
    • CHORE: Detect if Effect didn't track any reactive value and throw an EffectWithoutDependenciesError exception.
    Open source →
  12. 2.3.3 08 Sep 2025
    Release notes
    • FIX: Bump the solidart dependency to ^2.4.1.
    Open source →
  13. 2.3.2 08 Sep 2025
    Release notes
    • FIX: Signal.lazy which caused an exception.
    • CHORE: Improve SignalBuilder error handling and rebuilding.
    Open source →
  14. 2.3.1 04 Sep 2025
    Release notes
    • FIX: SignalBuilder rebuilded twice when a signal changed, added unit test to prevent this from happening again.
    Open source →
  15. 2.3.0 02 Sep 2025
    Release notes

    Changes from solidart

    • FEAT: Add Debouncer utility class to easily debounce operations and debounceDelay to Resource to debounce source changes if they fire very often.
    Open source →
  16. 2.2.0 29 Aug 2025
    Release notes

    Changes from solidart

    • FEAT: Allow extending signal, computed, resource, list-signal, set-signal and map-signal.
    Open source →
  17. 2.1.0 26 Aug 2025
    Release notes

    Changes from solidart

    • 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.
    Open source →
  18. 2.0.1 31 Jul 2025
    Release notes
    • CHORE: Update the solidart dependency to ^2.1.0.

    Changes from solidart

    • REFACTOR: Update alien_signals dependency from ^0.2.1 to ^0.4.3 with significant performance improvements (thanks to @medz).
    • REFACTOR: Replace custom reactive node implementations with alien.ReactiveNode for better compatibility and performance (thanks to @medz).
    • REFACTOR: Simplify signal, computed and effect implementations by leveraging new alien_signals API (thanks to @medz).
    • PERFORMANCE: Improve performance by removing redundant tracking operations in the reactive system (thanks to @medz).
    • FIX: Add proper cleanup for disposed nodes to prevent memory leaks (thanks to @medz).
    • FIX: Fix potential memory leaks in auto-dispose scenarios (thanks to @medz).
    • FIX: Clear queued flag when running effects in ReactiveSystem to ensure proper effect execution (thanks to @medz).
    • CHORE: Reorder dev_dependencies in pubspec.yaml for improved organization and readability (thanks to @medz).
    Open source →
  19. 2.0.0 03 Jun 2025
    Release notes
    • BREAKING CHANGE: Remove Solid and Providers, use disco instead.
    • FEAT: The SignalBuilder widget now automatically tracks the Signals used in the builder function allowing you to react to N signals at the same time. See the migration guide.
    • BREAKING CHANGE: Removed DualSignalBuilder and TripleSignalBuilder in favor of SignalBuilder.
    • BREAKING CHANGE: Removed ResourceBuilder in favor of SignalBuilder. See the migration guide.

    Changes from solidart

    • CHORE: Improve the performance by using alien_signals for the reactive system.
    • FEAT: Expose untracked.
    • REFACTOR: Updated the reactive system from scratch, improving the performances.
    • BREAKING CHANGE: Remove set and call methods from Signals (Use an extension to have them back).
    • FEAT: Add useRefreshing to Resource to decide whether to update the current state with isRefreshing (defaults to true). If you set it to false, when refreshing, the resource will go directly to the loading state.
    • FEAT: Add Signal.lazy to allow the creation of a signal without an initial value. Be aware, the signal will throw an error if you try to read its value before it has been initialized.
    • CHORE: Remove deprecated createSignal, createComputed, createEffect and createResource helpers.
    • CHORE: Remove SignalOptions and ResourceOptions classes.
    • FEAT: Add batch function to execute a callback that will not side-effect until its top-most batch is completed. See docs here
    • CHORE: Add trackInDevTools to SignalOptions and ResourceOptions to disable the DevTools tracking for specific signals and resources, defaults to SolidartConfig.devToolsEnabled.
    Open source →
  20. 2.0.0-dev.3 18 Feb 2025 pre-release
    Release notes
    • BREAKING CHANGE: Remove Solid and Providers, use disco instead.

    Changes from solidart

    • REFACTOR: Updated the reactive system from scratch, improving the performances.
    • BREAKING CHANGE: Remove set and call methods from Signals (Use an extension to have them back).
    • FEAT: Add useRefreshing to Resource to decide whether to update the current state with isRefreshing (defaults to true). If you set it to false, when refreshing, the resource will go directly to the loading state.
    Open source →
  21. 2.0.0-dev.2 05 Aug 2024 pre-release
    Release notes

    Changes from solidart

    • CHORE: Remove deprecated createSignal, createComputed, createEffect and createResource helpers.
    • CHORE: Remove SignalOptions and ResourceOptions classes.
    Open source →
  22. 2.0.0-dev.1 30 May 2024 pre-release
    Release notes
    • FEAT: The SignalBuilder widget now automatically tracks the Signals used in the builder function allowing you to react to N signals at the same time. See the migration guide.
    • BREAKING CHANGE: Removed DualSignalBuilder and TripleSignalBuilder in favor of SignalBuilder.
    • BREAKING CHANGE: Removed ResourceBuilder in favor of SignalBuilder. See the migration guide.
    • CHORE: Improved Solid widget performance by more than 3000% in finding ancestor providers.

    Changes from solidart

    • FEAT: Add batch function to execute a callback that will not side-effect until its top-most batch is completed. See docs here
    • CHORE: Add trackInDevTools to SignalOptions and ResourceOptions to disable the DevTools tracking for specific signals and resources, defaults to SolidartConfig.devToolsEnabled.
    Open source →
  23. 1.7.1 12 Apr 2024
    Release notes
    • Update dependencies
    Open source →
  24. 1.7.0 18 Dec 2023
    Release notes

    Changes from solidart

    • FEAT: Add DevTools extension to solidart.
    Open source →
  25. 1.6.1 09 Dec 2023
    Release notes

    Changes from solidart

    • BUGFIX: The method didUpdateSignal of SolidartObserver was not triggered for collections.
    Open source →
  26. 1.6.0 09 Dec 2023
    Release notes

    Changes from solidart

    • FEAT: Create SolidartConfig which you can use to customize the autoDispose of all the tracking system and and observers.
    • BUGFIX: Removed the internal ResourceUnresolved state so you can easily use the ResourceState sealed class.
    Open source →
  27. 1.5.0 30 Nov 2023
    Release notes

    Changes from solidart

    Open source →
  28. 1.4.3 24 Nov 2023
    Release notes

    Changes from solidart

    • BUGFIX: Fix the update method of a Resource that triggered reportObserved.
    Open source →
  29. 1.4.2 23 Nov 2023
    Release notes

    Update solidart version

    Open source →
  30. 1.4.1 23 Nov 2023
    Release notes

    Changes from solidart

    • BUGFIX: Fix the updateValue method of a Signal that triggered reportObserved. (thanks to @9dan)
    Open source →
  31. 1.4.0 29 Oct 2023
    Release notes
    • CHORE: Rename SolidProvider into Provider.
    • REFACTOR: Remove SolidSignal in favor of Provider.
    Open source →
  32. 1.3.0 23 Oct 2023
    Release notes

    Changes from solidart

    • FEAT: Add 3 new signals: ListSignal, SetSignal and MapSignal. Now you can easily be notified of every change of a list, set or map. Before:

      final list = Signal([1, 2]);
      // this doesn't work
      list.add(3);
      // instead you have to provide a new list instance
      list.value = [...list, 3];
      

      Now:

      final list = ListSignal([1, 2]);
      // this now works as expected
      list.add(3);
      
    • CHORE: Rename the firstWhere method of a ReadSignal into until

    • CHORE: Rename the firstWhereReady method of a Resource into untilReady

    • CHORE: Rename the update method of a Signal into updateValue

    • CHORE: Deprecate createSignal, createComputed, createEffect and createResource

    Open source →
  33. 1.2.0 11 Oct 2023
    Release notes
    • FEAT: Add the method maybeGet() to the Solid widget to get a provider. If the provider can't be found, returns null instead of throwing like get() does
    Open source →
  34. 1.1.0 03 Oct 2023
    Release notes

    Changes from solidart

    • BUGFIX: Fix a bug in the Resource where the stream subscription was not disposed correctly
    Open source →
  35. 1.0.1 06 Sep 2023
    Release notes

    Changes from solidart

    • CHORE Improve copyWith methods of ResourceReady and ResourceError
    Open source →
  36. 1.0.0 04 Aug 2023
    Release notes

    The core of the library has been rewritten in order to support automatic dependency tracking like SolidJS.

    • The Show widget now takes a functions that returns a bool. You can easily convert any type to bool, for example:

      final count = createSignal(0);
      
      @override
      Widget build(BuildContext context) {
        return Show(
          when: () => count() > 5,
          builder: (context) => const Text('Count is greater than 5'),
          fallback: (context) => const Text('Count is lower than 6'),
        );
      }
      
    • Converting a ValueNotifier into a Signal now uses the equals comparator to keep the consistency.

    • Rename resource parameter of ResourceWidgetBuilder into resourceState. (thanks to @manuel-plavsic)

    • FEAT Allow multiple providers of the same type by specifying an identifier.

      Provider declaration:

      SolidProvider<NumberProvider>(
        create: () => const NumberProvider(1),
        id: 1,
      ),
      SolidProvider<NumberProvider>(
        create: () => const NumberProvider(10),
        id: 2,
      ),
      

      Access a specific provider

      final numberProvider1 = context.get<NumberProvider>(1);
      final numberProvider2 = context.get<NumberProvider>(2);
      
    • BREAKING CHANGE Removed the signals map from Solid, now to provide signals to descendants use SolidSignal inside providers:

      Before:

      Solid(
        signals: {
          SignalId.themeMode: () => createSignal<ThemeMode>(ThemeMode.light),
        },
      ),
      

      Now:

      Solid(
        providers: [
          SolidSignal<Signal<ThemeMode>>(create: () => createSignal(ThemeMode.light)),
        ],
      ),
      
    • FEAT You can access a specific Signal without specifing an identifier, for example:

      // to get the signal
      context.get<Signal<ThemeMode>>();
      // to observe the signal's value
      context.observe<ThemeMode>()
      

      NOTICE: If you have multiple signals of the same type, you must specify a different id for each one.

    • FEAT: Now you can get any instance of (any subclass of) the provider type.

    • FEAT: The Solid widget now acceps a builder method that provides a descendant context.

    • CHORE: The ResourceBuilder no longer resolves the resource, because now the Resource knows when to resolve automatically.

    Changes from solidart

    • FEAT: Add automatic dependency tracking

    • BREAKING CHANGE: To create derived signals now you should use createComputed instead of signalName.select This allows you to derive from many signals instead of only 1.

      Before:

      final count = createSignal(0);
      final doubleCount = count.select((value) => value * 2);
      

      Now:

      final count = createSignal(0);
      final doubleCount = createComputed(() => count() * 2);
      
    • FEAT: The createEffect no longer needs a signals array, it automatically track each signal.

      Before:

      final effect = createEffect(() {
        print('The counter is now ${counter.value}');
      }, signals: [counter]);
      

      Now:

      final disposeFn = createEffect((disposeFn) {
        print('The counter is now ${counter.value}');
      })
      
    • BREAKING CHANGE: The fireImmediately field on effects has been removed. Now an effect runs immediately by default.

    • FEAT: Add observe method on Signal. Use it to easily observe the previous and current value instead of creating an effect.

      final count = createSignal(0);
      final disposeFn = count.observe((previousValue, value) {
        print('The counter changed from $previousValue to $value');
      }, fireImmediately: true);
      
    • FEAT: Add firstWhere method on Signal. It returns a future that completes when the condition evaluates to true and it returns the current signal value.

      final count = createSignal(0);
      // wait until the count is greater than 5
      final value = await count.firstWhere((value) => value > 5);
      
    • FEAT: Add firstWhereReady method on Resource. Now you can wait until the resource is ready.

      final resource = createResource(..);
      final data = await resource.firstWhereReady();
      
    • FEAT: The Resource now accepts ResourceOptions. You can customize the lazy value of the resource (defaults to true), if you want your resource to resolve immediately.

    • CHORE: ResourceValue has been renamed into ResourceState. Now you can get the state of the resource with the state getter.

    • CHORE: Move refreshing from ResourceWidgetBuilder into the ResourceState. (thanks to @manuel-plavsic)

    • FEAT: Add hasPreviousValue getter to ReadSignal. (thanks to @manuel-plavsic)

    • FEAT Before, only the fetcher reacted to the source. Now also the stream reacts to the source changes by subscribing again to the stream. In addition, the stream parameter of the Resource has been changed from Stream into a Stream Function() in order to be able to listen to a new stream if it changed.

    • FEAT: Add the select method on the Resource class. The select function allows filtering the Resource's data by reading only the properties that you care about. The advantage is that you keep handling the loading and error states.

    • FEAT: Make the Resource to auto-resolve when accessing its state.

    • CHORE: The refetch method of a Resource has been renamed to refresh.

    • FEAT: You can decide whether to use createSignal() or directly the Signal() constructor, now the're equivalent. The same applies to all the other create functions.

    Open source →
  37. 1.0.0-dev903 14 Jul 2023 pre-release
    Release notes
    • FEAT: The Solid widget now acceps a builder method that provides a descendant context.
    • CHORE: The ResourceBuilder no longer resolves the resource, because now the Resource knows when to resolve automatically.

    Changes from solidart

    • FEAT: Add the select method on the Resource class. The select function allows filtering the Resource's data by reading only the properties that you care about. The advantage is that you keep handling the loading and error states.
    • FEAT: Make the Resource to auto-resolve when accessing its state
    Open source →
  38. 1.0.0-dev902 11 Jul 2023 pre-release
    Release notes
    • CHORE: Deprecate the value setter in the Resource in favor of the state setter
    Open source →
  39. 1.0.0-dev901 11 Jul 2023 pre-release
    Release notes
    • FEAT: Now you can get any instance of (any subclass of) the provider type.
    Open source →
  40. 1.0.0-dev9 06 Jul 2023 pre-release
    Release notes
    • FIX: A small fix of the Solid widget now allows to correctly retrieve a Computed signal

    Changes from solidart

    • CHORE: createComputed now returns a Computed class instead of a ReadSignal.
    Open source →
  41. 1.0.0-dev8 03 Jul 2023 pre-release
    Release notes
    • FEAT Allow multiple providers of the same type by specifying an identifier.

      Provider declaration:

      SolidProvider<NumberProvider>(
        create: () => const NumberProvider(1),
        id: 1,
      ),
      SolidProvider<NumberProvider>(
        create: () => const NumberProvider(10),
        id: 2,
      ),
      

      Access a specific provider

      final numberProvider1 = context.get<NumberProvider>(1);
      final numberProvider2 = context.get<NumberProvider>(2);
      
    • BREAKING CHANGE Removed the signals map from Solid, now to provide signals to descendants use SolidSignal inside providers:

      Before:

      Solid(
        signals: {
          SignalId.themeMode: () => createSignal<ThemeMode>(ThemeMode.light),
        },
      ),
      

      Now:

      Solid(
        providers: [
          SolidSignal<Signal<ThemeMode>>(create: () => createSignal(ThemeMode.light)),
        ],
      ),
      
    • FEAT You can access a specific Signal without specifing an identifier, for example:

      // to get the signal
      context.get<Signal<ThemeMode>>();
      // to observe the signal's value
      context.observe<ThemeMode>()
      

      NOTICE: If you have multiple signals of the same type, you must specify a different id for each one.

    Open source →
  42. 1.0.0-dev7 01 Jul 2023 pre-release
    Release notes

    Changes from solidart

    • FEAT Before, only the fetcher reacted to the source. Now also the stream reacts to the source changes by subscribing again to the stream. In addition, the stream parameter of the Resource has been changed from Stream into a Stream Function() in order to be able to listen to a new stream if it changed
    Open source →
  43. 1.0.0-dev6 22 Jun 2023 pre-release
    Release notes

    Changes from solidart

    • BUGFIX Refactor the core of the library in order to fix issues with previousValue and hasPreviousValue of Computed and simplify the logic.
    Open source →
  44. 1.0.0-dev5 17 Jun 2023 pre-release
    Release notes
    • Rename resource parameter of ResourceWidgetBuilder into resourceState. (thanks to @manuel-plavsic)

    Changes from solidart

    • Move refreshing from ResourceWidgetBuilder into the ResourceState. (thanks to @manuel-plavsic)
    • Add hasPreviousValue getter to ReadSignal. (thanks to @manuel-plavsic)
    Open source →
  45. 1.0.0-dev4 08 Jun 2023 pre-release
    Release notes
    • Converting a ValueNotifier into a Signal now uses the equals comparator to keep the consistency.

    Changes from solidart

    Deprecate value getter in the Resource. Use state instead.

    Open source →
  46. 1.0.0-dev3 05 Jun 2023 pre-release
    Release notes

    Add SolidSignalOptions and SolidResourceOptions for signals and resources provided through the Solid widget. With this field you can customize the autoDispose of each Solid signal individually. (Defaults to true).

    Changes from solidart

    • Rename until into firstWhere

    • Rename untilReady into firstWhereReady

    • FEAT: add where method to Signal. It returns a new ReadSignal with the values filtered by condition. Use it to filter the value of another signal, e.g.:

      final loggedInUser = user.where((value) => value != null);
      

      The initial value may be null because a Signal must always start with an initial value. The following values will always satisfy the condition. The returned ReadSignal will automatically dispose when the parent signal disposes.

    Open source →
  47. 1.0.0-dev2 01 Jun 2023 pre-release
    Release notes

    The Show widget now takes a functions that returns a bool. You can easily convert any type to bool, for example:

    final count = createSignal(0);
    
    @override
    Widget build(BuildContext context) {
      return Show(
        when: () => count() > 5,
        builder: (context) => const Text('Count is greater than 5'),
        fallback: (context) => const Text('Count is lower than 6'),
      );
    }
    
    Open source →
  48. 1.0.0-dev10 10 Jul 2023 pre-release

    Nothing published for this version

  49. 1.0.0-dev1 19 May 2023 pre-release
    Release notes

    This is a development preview of the 1.0.0 release of solidart. The core of the library has been rewritten in order to support automatic dependency tracking like SolidJS.

    • FEAT: Add automatic dependency tracking

    • BREAKING CHANGE: To create derived signals now you should use createComputed instead of signalName.select This allows you to derive from many signals instead of only 1.

      Before:

      final count = createSignal(0);
      final doubleCount = count.select((value) => value * 2);
      

      Now:

      final count = createSignal(0);
      final doubleCount = createComputed(() => count() * 2);
      
    • FEAT: The createEffect no longer needs a signals array, it automatically track each signal.

      Before:

      final effect = createEffect(() {
        print('The counter is now ${counter.value}');
      }, signals: [counter]);
      

      Now:

      final disposeFn = createEffect((disposeFn) {
        print('The counter is now ${counter.value}');
      })
      
    • BREAKING CHANGE: The createEffect method no longer returns an Effect, you cannot pause or resume it anymore. Instead it returns a Dispose callback which you can call when you want to stop it. You can also dispose an effect from the inside of the callback.

    • BREAKING CHANGE: The fireImmediately field on effects has been removed. Now an effect runs immediately by default.

    • FEAT: Add observe method on Signal. Use it to easily observe the previous and current value instead of creating an effect.

      final count = createSignal(0);
      final disposeFn = count.observe((previousValue, value) {
        print('The counter changed from $previousValue to $value');
      }, fireImmediately: true);
      
    • FEAT: Add until method on Signal. It returns a future that completes when the condition evaluates to true and it returns the current signal value.

      final count = createSignal(0);
      // wait until the count is greater than 5
      final value = await count.until((value) => value > 5);
      
    • FEAT: Add untilReady method on Resource. Now you can wait until the resource is ready.

      final resource = createResource(..);
      final data = await resource.untilReady();
      
    • FEAT: The Resource now accepts ResourceOptions. You can customize the lazy value of the resource (defaults to true), if you want your resource to resolve immediately.

    • CHORE: ResourceValue has been renamed into ResourceState. Now you can get the state of the resource with the state getter.

    • FEAT: Add toValueNotifier() extension to Signal to easily convert it to a ValueNotifier.

    • FEAT: Add toSignal() extension to ValueNotifier to easily convert it to a Signal.

    Open source →
  50. 1.0.0-dev.10 10 Jul 2023 pre-release

    Nothing published for this version

  51. 0.4.2 20 Apr 2023
    Release notes
    • BUGFIX: The Show widget now can work again with a ReadSignal.
    Open source →
  52. 0.4.1 06 Apr 2023
    Release notes
    • CHORE: The ResourceBuilder now correctly handles a different Resource when the widget is updated.
    Open source →
  53. 0.4.0 31 Mar 2023
    Release notes
    • BUGFIX: Listening to the source of a Resource was not stopped when the source disposed.
    • BUGFIX: A Resource would not perform the asynchronous operation until someone called the fetch method, typically the ResourceBuilder widget. This did not apply to the stream which was listened to when the resource was created. Now the behaviour has been merged and the fetch method has been renamed into resolve.
    • CHORE: Renamed ReadableSignal into ReadSignal.
    • CHORE: Renamed the readable method of a Signal into toReadSignal()
    Open source →
  54. 0.3.3 27 Mar 2023
    Release notes
    • Add update extension on BuildContext. It's a convenience method to update a Signal value.

      You can use it to update a signal value, e.g:

      context.update<int>('counter', (value) => value * 2);
      

      This is equal to:

      // retrieve the signal
      final signal = context.get<Signal<int>>('counter');
      // update the signal
      signal.update((value) => value * 2);
      

      but shorter when you don't need the signal for anything else.

    Open source →
  55. 0.3.2 19 Mar 2023
    Release notes
    • Add assert to resource fetch method to prevent multiple fetches of the same resource.
    • Fix ResourceBuilder that fetched the resource every time even if the resource was already resolved.
    Open source →
  56. 0.3.1 07 Mar 2023
    Release notes
    • The select method of a signal now can take a custom options parameter to customize its behaviour.
    • Fixed an invalid assert in the ResourceBuilder widget that happens for resources without a fetcher.
    Open source →
  57. 0.3.0 28 Feb 2023
    Release notes
    • Now Solid can deal also with SolidProviders. You no longer need an external dependency injector library. I decided to put some boundaries and stop suggesting any external dependency injector library. This choice is due to the fact that external libraries in turn provide state management and the user is more likely to mistakenly use solidart. I simplified the usage of InheritedWidgets with a very nice API:

      Declare providers

      Solid(
            providers: [
              SolidProvider<NameProvider>(
                create: () => const NameProvider('Ale'),
                // the dispose method is fired when the [Solid] widget above is removed from the widget tree.
                dispose: (provider) => provider.dispose(),
              ),
              SolidProvider<NumberProvider>(
                create: () => const NumberProvider(1),
                // Do not create the provider lazily, but immediately
                lazy: false,
              ),
            ],
            child: const SomeChildThatNeedsProviders(),
        )
      

      Retrieve providers

      final nameProvider = context.get<NameProvider>();
      final numberProvider = context.get<NumberProvider>();
      

      Provide providers to modals (dialogs, bottomsheets)

        return showDialog(
          context: context,
          builder: (dialogContext) => Solid.value(
            // pass a context that has access to providers
            context: context,
            // pass the list of provider [Type]s
            providerTypes: const [NameProvider],
            child: Dialog(
              child: Builder(builder: (innerContext) {
                // retrieve the provider with the innerContext
                final nameProvider = innerContext.get<NameProvider>();
                return SizedBox.square(
                  dimension: 100,
                  child: Center(
                    child: Text('name: ${nameProvider.name}'),
                  ),
                );
              }),
            ),
          ),
        );
      

      You cannot provide multiple providers of the same type in the same Solid widget.

    Open source →
  58. 0.2.2 20 Feb 2023
    Release notes
    • createResource now accepts a stream and can be used to wrap a Stream and correctly handle its state.
    Open source →
  59. 0.2.1 20 Feb 2023
    Release notes
    • Get a signal value with signalName().
    Open source →
  60. 0.2.0 19 Feb 2023
    Release notes
    • Documentation improvements
    • Refactor Resource, now the createResource method takes only 1 generic, the type of the future result.
      // before
      final resource = createResource<SourceValueType, FetcherValueType>(fetcher: fetcher, source: source);
      // now
      final resource = createResource<FetcherValueType>(fetcher: fetcher, source: source); // the FetcherValueType can be inferred by Dart >=2.18.0, so you can omit it
      
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive