StreamSignalMixin#
Kind:
class |
Package: package:signals_core
Class: StreamSignalMixin#
A mixin that implements the standard Stream interface for a ReadonlySignal.
This mixin allows you to treat a read-only or writable signal as a standard asynchronous
Stream, where updates to the signal's value are pushed as stream events.
This provides out-of-the-box compatibility with the entire asynchronous Dart SDK,
such as stream transformers, await for loops, and Flutter's StreamBuilder.
Example Usage#
import 'package:signals/signals.dart';
class MyStreamSignal extends Signal<int> with StreamSignalMixin<int> {
MyStreamSignal(super.internalValue);
}
void main() async {
final counter = MyStreamSignal(0);
// Standard stream subscription
final subscription = counter.listen((val) {
print('Stream emitted: $val');
}); // Prints: "Stream emitted: 0" (if listened immediately)
counter.value = 1; // Prints: "Stream emitted: 1"
counter.value = 2; // Prints: "Stream emitted: 2"
await subscription.cancel();
}
Flutter StreamBuilder Example#
import 'package:flutter/material.dart';
import 'package:signals/signals_flutter.dart';
class CounterSignal extends Signal<int> with StreamSignalMixin<int> {
CounterSignal(int value) : super(value);
}
final counter = CounterSignal(0);
Widget build(BuildContext context) {
return StreamBuilder<int>(
stream: counter,
builder: (context, snapshot) {
return Text('Count: ${snapshot.data}');
},
);
}
Since StreamSignalMixin creates an internal broadcast StreamController, multiple listeners
can subscribe simultaneously. All subscriptions are closed and resources are released
automatically when the signal is disposed.
Members of StreamSignalMixin#
| Member | Type | Signature | Description |
|---|---|---|---|
| any | method |
dart Future |
|
| asBroadcastStream | method |
dart Stream
|
|
| asyncExpand | method |
dart Stream |
|
| asyncMap | method |
dart Stream |
|
| cast | method |
dart Stream |
|
| contains | method |
dart Future |
|
| distinct | method |
dart Stream |
|
| drain | method |
dart Future |
|
| elementAt | method |
dart Future |
|
| every | method |
dart Future |
|
| expand | method |
dart Stream |
|
| first | method |
dart Future |
|
| firstWhere | method |
dart Future |
|
| fold | method |
dart Future |
|
| forEach | method |
dart Future |
|
| handleError | method |
dart Stream |
|
| isBroadcast | method |
dart bool isBroadcast |
|
| isEmpty | method |
dart Future |
|
| join | method |
dart Future |
|
| last | method |
dart Future |
|
| lastWhere | method |
dart Future |
|
| length | method |
dart Future |
|
| listen | method |
dart StreamSubscription
|
|
| map | method |
dart Stream |
|
| pipe | method |
dart Future pipe(StreamConsumer |
|
| reduce | method |
dart Future |
|
| single | method |
dart Future |
|
| singleWhere | method |
dart Future |
|
| skip | method |
dart Stream |
|
| skipWhile | method |
dart Stream |
|
| take | method |
dart Stream |
|
| takeWhile | method |
dart Stream |
|
| timeout | method |
dart Stream
|
|
| toList | method |
dart Future<List |
|
| toSet | method |
dart Future<Set |
|
| transform | method |
dart Stream |
|
| where | method |
dart Stream |
References#
The StreamSignalMixin type is referenced and used in the following pages:
- ValueNotifier (guides)
- StreamSignalMixin (signals_flutter/mixins)
- signals_flutter
- StreamSignalMixin (signals_core/mixins)
- signals_core
- StreamSignalMixin (signals/mixins)
- signals