SubStream<T> constructor
SubStream<T> ({
- required SubValueCreate<
Stream< create,T> > - SubValueKeys? keys,
- SubValueUpdate<
Stream< ? update,T> > - T? initialData,
- bool preserveState = true,
- ValueChanged<
T> ? listener, - required SubValueBuild<
AsyncSnapshot< builder,T> >
Creates and subscribes to a Stream, then exposes its current state as an AsyncSnapshot.
listener
is called with every event the stream emits.preserveState
determines if the current value should be preserved when changing the Stream instance.
When preserveState
is true (the default) update jank is reduced when switching
streams, but this may result in inconsistent state when using multiple
or nested streams.
Implementation
SubStream({
required super.create,
super.keys,
super.update,
T? initialData,
bool preserveState = true,
ValueChanged<T>? listener,
required SubValueBuild<AsyncSnapshot<T>> builder,
}) : super(
builder: (context, stream) => SubValue<Stream<T>>(
create: () => stream.asBroadcastStream(
onCancel: (subscription) => subscription.cancel(),
),
keys: [stream],
builder: (context, stream) => SubSubscriber<T>(
stream: stream,
listener: listener,
child: StreamBuilder<T>(
initialData: initialData,
stream: stream,
builder: preservedSnapshotBuilder(
preserveState: preserveState,
initialData: initialData,
builder: builder,
),
),
),
),
);