AutoDisposeStreamProvider<State> class
Null safety
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:
- Provider, a provider that synchronously creates a value
- FutureProvider, a provider that asynchronously expose a value which can change over time.
AlwaysAliveAsyncProviderX.stream
, to obtain the Stream created instead of an AsyncValue.AlwaysAliveAsyncProviderX.future
, to obtain the last value emitted by a Stream.- StreamProvider.family, to create a StreamProvider from external parameters
- StreamProvider.autoDispose, to destroy the state of a StreamProvider when no-longer needed.
- Inheritance
-
- Object
- ProviderBase<
AsyncValue< State> > - AutoDisposeProviderBase<
AsyncValue< State> > - AutoDisposeStreamProvider
- Annotations
Constructors
-
AutoDisposeStreamProvider(Create<
Stream< _create, {String? name, List<State> , AutoDisposeStreamProviderRef<State> >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.
read-onlyinherited
-
last
→ AutoDisposeProviderBase<
Future< State> > -
{@template riverpod.streamprovider.future}
read-only
- 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
.read-onlyoverride - runtimeType → Type
-
A representation of the runtime type of the object.
read-onlyinherited
-
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 non-existent method or property is accessed.
inherited
-
overrideWithProvider(
AutoDisposeProviderBase< AsyncValue< value) → OverrideState> > -
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.
AutoDisposeStreamProviderFamilyBuilder()