AutoDisposeStreamProvider<State> class

Creates a stream and expose its latest event.

StreamProvider is identical in behavior/usage to FutureProvider, modulo the fact that the value created is a Stream instead of a Future.

It can be used to express a value asynchronously loaded that can change over time, such as an editable Message coming from a web socket:

final messageProvider = StreamProvider.autoDispose<String>((ref) async* {
  // Open the connection
  final channel = IOWebSocketChannel.connect('ws://echo.websocket.org');

  // Close the connection when the stream is destroyed
  ref.onDispose(() => channel.sink.close());

  // Parse the value received and emit a Message instance
  await for (final value in channel.stream) {
    yield value.toString();
  }
});

Which the UI can then listen:

Widget build(BuildContext context, WidgetRef ref) {
  AsyncValue<String> message = ref.watch(messageProvider);

  return message.when(
    loading: () => const CircularProgressIndicator(),
    error: (err, stack) => Text('Error: $err'),
    data: (message) {
      return Text(message);
    },
  );
}

Note: When listening to web sockets, firebase, or anything that consumes resources, it is important to use StreamProvider.autoDispose instead of simply StreamProvider.

This ensures that the resources are released when no-longer needed as, by default, a StreamProvider is almost never destroyed.

See also:

Inheritance
Annotations
  • @sealed

Constructors

AutoDisposeStreamProvider(Create<Stream<State>, AutoDisposeStreamProviderRef<State>> _create, {String? name, List<ProviderOrFamily>? dependencies, Family<dynamic, dynamic, ProviderBase>? from, Object? argument})
Creates a stream and expose its latest event.

Properties

allTransitiveDependencies List<ProviderOrFamily>?
All the dependencies of a provider and their dependencies too.
latefinalinherited
argument Object?
If this provider was created with the .family modifier, argument is variable used.
finalinherited
dependencies List<ProviderOrFamily>?
The list of providers that this provider potentially depends on.
final
from Family<dynamic, dynamic, ProviderBase>?
If this provider was created with the .family modifier, from is the .family instance.
finalinherited
future AutoDisposeProviderBase<Future<State>>
{@template riverpod.streamprovider.future}
latefinal
hashCode int
The hash code for this object.
no setterinherited
last AutoDisposeProviderBase<Future<State>>
{@template riverpod.streamprovider.future}
no setter
name String?
A custom label for providers.
finalinherited
originProvider ProviderBase<AsyncValue<State>>
The provider that will be refreshed when calling ProviderContainer.refresh and that will be overridden when passed to ProviderScope.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
stream AutoDisposeProviderBase<Stream<State>>
{@template riverpod.streamprovider.stream}
latefinal

Methods

create(covariant AutoDisposeStreamProviderElement<State> ref) AsyncValue<State>
Initializes the state of a provider
override
createElement() → AutoDisposeStreamProviderElement<State>
An internal method that defines how a provider behaves.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
overrideWithProvider(AutoDisposeProviderBase<AsyncValue<State>> value) Override
Overrides a provider with a value, ejecting the default behaviour.
inherited
overrideWithValue(AsyncValue<State> value) Override
Overrides a provider with a value, ejecting the default behaviour.
inherited
select<Selected>(Selected selector(AsyncValue<State> value)) ProviderListenable<Selected>
Partially listen to a provider.
inherited
toString() String
A string representation of this object.
inherited
updateShouldNotify(AsyncValue<State> previousState, AsyncValue<State> newState) bool
Called when a provider is rebuilt. Used for providers to not notify their listeners if the exposed value did not change.
override

Operators

operator ==(Object other) bool
The equality operator.
inherited

Constants

family → const AutoDisposeStreamProviderFamilyBuilder
A group of providers that builds their value from an external parameter.