bloc_signals 1.6.0 copy "bloc_signals: ^1.6.0" to clipboard
bloc_signals: ^1.6.0 copied to clipboard

Core pure Dart reactive state container bridging BLoC semantics with signals v7 primitives.

1.6.0 #

  • Fix (core): Throw StateError when dispatching an unregistered event to an on<E>-based BlocSignal (#325).
  • Fix (concurrency): Track active execution token in restartable() to prevent false task_preempted telemetry when an active handler completes while an earlier superseded handler is still in flight (#324).
  • Fix (core): Remove dead internal _lifecycleModel no-op effect in CubitSignalMixin that held a permanent subscription to _state and prevented SignalOptions watched, unwatched, and autoDispose callbacks from firing (#323).
  • Feat (core): Remove @protected annotation from BlocSignalBase.equals and CubitSignalMixin.equals so UI bindings and external adapters can evaluate container state equality without violating visibility diagnostics (#320).

1.5.0 #

  • Add BlocSignalObserver.onEventCompleted lifecycle hook called synchronously or asynchronously upon event handler completion.
  • Reconcile DevToolsService history payloads to include instanceHashCode and currentState for seamless integration with bloc_signals_devtools.
  • Support typed event deserializer registration in DevToolsService.registerEventDeserializer() and validate JSON payloads with explicit FormatException handling in handleDispatch.
  • Update emitContainerTelemetry documentation clarifying its role as the public entrypoint for custom concurrency transformers.
  • Isolate observer exceptions across onCreate, onEvent, onTransition, onChange, and onClose in try/catch blocks so that throwing observers cannot abort state updates (_state.value = newState) or lifecycle hooks. All observer exceptions are routed to onError.
  • Protect onError against recursive crashes if an observer throws inside its error handler.
  • Introduce CompositeBlocSignalObserver and static helpers BlocSignalObserver.addObserver() and BlocSignalObserver.removeObserver() for first-class multi-observer chaining without breaking existing single-observer assignments.
  • Eliminate release-mode overhead in DevToolsService and DevToolsBlocSignalObserver: elide map allocations and history retention in release builds, and key containers by identityHashCode(bloc) rather than mutable bloc.hashCode.
  • Guard sequential() concurrency event transformers against container closure, automatically discarding pending queued events when isClosed is true.
  • Break internal circular import cycles within lib/src/, transforming internal package structure into a clean Directed Acyclic Graph (DAG).

1.4.0 #

  • Add container.value getter as an alias for container.stateValue on BlocSignalBase and CubitSignalMixin to provide complete 1:1 symmetry with container.state, Flutter context extensions (context.state / context.value), and Flutter's ValueListenable.value.

1.3.0 #

  • Introduce BlocEventTransformer<E, StateType> signature passing host bloc as first parameter (bloc, event, handler, emit) for typed access to stateValue, telemetry, and container context.
  • Add optional blocTransformer: parameter to BlocSignalMixin.on<E>() with mutual exclusivity assertion against transformer:.
  • Add withBloc() instance adapter method on BlocSignalMixin to adapt a BlocEventTransformer into a standard EventTransformer.
  • Add EventTransformerExtension.toBlocTransformer() extension method on EventTransformer<E, StateType> to adapt 3-parameter transformers into 4-parameter contextual transformers.
  • Refactor droppable and restartable to preserve synchronous fast-paths for synchronous handlers, avoiding microtask queue delays and ensuring immediate same-frame execution.

1.2.0 #

  • Add CubitSignalMixin<StateType> and BlocSignalMixin<Event, StateType> to overcome Dart's single inheritance limitation and allow arbitrary classes (ChangeNotifier, TextEditingController, AnimationController, BaseRepository, custom models) to become first-class BlocSignalBase containers.
  • Adopt a DRY core architecture where CubitSignal and BlocSignal compose CubitSignalMixin and BlocSignalMixin as the single source of truth.
  • Update DevToolsService to recognize and dispatch events to all BlocSignalMixin containers.

1.1.0 #

  • Add SignalBlocSignal reactive adapter container wrapping any ReadonlySignal into a BlocSignalBase.
  • Add ReadonlySignalBlocSignalExtension on ReadonlySignal<T> (.toBlocSignal()).
  • Add FutureBlocSignal container and FutureBlocSignalExtension on Future<T> (.toBlocSignal(required initialState:) and .toAsyncBlocSignal()).
  • Add StreamBlocSignalExtension.toAsyncBlocSignal() on Stream<T> adapting streams to BlocSignalBase<AsyncState<T>>.
  • Support converting Signal, Computed, FutureSignal, StreamSignal, and lifted primitives (value.$) into BlocSignalBase.

1.0.1 #

  • Document the streamless EventTransformer higher-order model and architecture.
  • Add recipes and documentation for custom transformers (debounce, filterEvents).
  • Expand doc comments for droppable(), sequential(), restartable(), and on<E>().

1.0.0+1 #

  • Re-trigger pub.dev Pana static analysis.

1.0.0 #

  • Official 1.0.0 production release.

0.9.0 #

  • Staging release candidate for the 1.0.0 production milestone.
  • Add streamless custom EventTransformer API support and extended AsyncState evaluation test suites.
  • Complete 100% pub.dev documentation coverage (///) across all exported symbols and constructors.

0.2.10 #

  • Add explicit doc comments to BlocSignalObserver and Mutex constructors for 100% pub.dev documentation coverage.
  • Add flush-left side-by-side header logo table to README.

0.2.8 #

  • Add configurable options (SignalOptions, EffectOptions) and rich default debug names across state containers.
  • Add runnable @example code blocks for droppable(), sequential(), restartable(), and Mutex.protect().
  • Add runnable @example code blocks for toStream(), StreamBlocSignal, and toBlocSignal().
  • Add runnable @example code blocks for DevToolsBlocSignalObserver and DevToolsService.

0.2.7 #

  • Add direct links to the Migration Guide and Universal Interoperability Guide skills in README documentation.

0.2.6 #

  • Add comprehensive ecosystem package cross-linking table and motto to README.
  • Add quick inlined method code examples for CubitSignal, BlocSignal, on<E>, and concurrency transformers.

0.2.5 #

  • Add universal DevTools telemetry observer (DevToolsBlocSignalObserver) broadcasting bloc_signal.* VM Service events.
  • Add VM Service RPC extensions (DevToolsService):
    • Register ext.bloc_signal.getInstances returning active container metadata and state values.
    • Register ext.bloc_signal.getHistory returning transition and error history entries per container.
    • Register ext.bloc_signal.dispatch enabling remote event dispatching over VM Service RPC.

0.2.4 #

  • Add overridable change-definition (equality/identity) mechanism to state containers:
    • Add @protected bool equals(StateType previous, StateType current) method to BlocSignalBase.
    • Add optional equals: constructor parameter to BlocSignalBase, CubitSignal, and BlocSignal.
    • Add optional equals: parameter to Stream.toBlocSignal() extension.
    • Automatically synchronize custom equality rules with the underlying state (ReadonlySignal) graph.

0.2.3 #

  • Add event concurrency strategy transformers and Mutex lock:
    • Add optional transformer parameter to on<E> event handler registry.
    • Add droppable(), sequential(), and restartable() event transformers.
    • Add zero-dependency Mutex class for FIFO queue async mutual exclusion.

0.2.2 #

  • Add bidirectional stream interop extensions and progressive migration bridge:
    • Add BlocSignalStreamExtension on BlocSignalBase (.toStream(), .stream).
    • Add StreamBlocSignal container adapting standard Dart Stream<T> / BLoCs to BlocSignalBase<T>.
    • Add StreamBlocSignalExtension on Stream<T> (.toBlocSignal()).
    • Auto-close StreamBlocSignal when underlying stream completes.

0.2.1 #

  • Fix package classification on pub.dev to include "Dart" SDK support by migrating from signals dependency to pure Dart signals_core.

0.2.0 #

  • Introduce complete BLoC API Parity:
    • Add Change class for tracking state updates.
    • Add Transition class for tracking event-triggered state changes.
    • Add onCreate, onChange, and onClose observer methods to BlocSignalObserver.
    • Add onChange and onTransition local overrides.
    • Change close() to return Future<void>.

0.1.13 #

  • Add createEffect helper to BlocSignalBase to support auto-disposed effects in subclass constructors.

0.1.12 #

  • Simplify duplicate handler registration check in on<E> to throw StateError directly and resolve a test coverage gap.

0.1.11 #

  • Refactor framework architecture to extract BlocSignalBase and introduce CubitSignal for clean, method-driven state management.
  • Remove legacy <void, State> generic typing from Cubits.

0.1.10 #

  • Remove pre-release Dart SDK constraints in favor of stable ^3.10.0.
  • Update documentation and structure the primary BLoC-to-BlocSignal migration guide inside a consumable AI coding assistant skill.

0.1.9 #

  • Widen Dart SDK constraint to include pre-release versions of Dart 3.10.0.

0.1.8 #

  • Relax Dart SDK constraints to ^3.10.0 and relax meta package version constraints.

0.1.7 #

  • Add BLoC-compatible on<Event> API handler registration registry.

0.1.6 #

  • Fix relative Migration Guide link in README for pub.dev.

0.1.5 #

  • Add assertion to throw AssertionError in debug/development mode when emit() is called after close().

0.1.4 #

  • Fix runtime TypeError when async onEvent returns a non-nullable Future type.

0.1.3 #

  • Support asynchronous onEvent handlers (FutureOr<void>).
  • Implement zone-based transition event context tracing.

0.1.2 #

  • Implement isClosed and drop events/state updates after disposal.

0.1.1 #

  • Add Cubit migration guide to documentation.

0.1.0 #

  • Initial release of core bloc_signals state management primitives.
  • Integrates Rody Davis's signals package with BLoC design patterns.
29
likes
160
points
2.67k
downloads

Documentation

API reference

Publisher

verified publisherblocsignal.dev

Weekly Downloads

Core pure Dart reactive state container bridging BLoC semantics with signals v7 primitives.

Repository (GitHub)
View/report issues
Contributing

License

MIT (license)

Dependencies

meta, preact_signals, signals_core

More

Packages that depend on bloc_signals