This package exposes the
StreamChannel interface, which represents a two-way
communication channel. Each
StreamChannel exposes a
Stream for receiving
data and a
StreamSink for sending it.
StreamChannel helps abstract communication logic away from the underlying
protocol. For example, the
test package re-uses its test suite
communication protocol for both WebSocket connections to browser suites and
Isolate connections to VM tests.
This package also contains utilities for dealing with
StreamChannels and with
two-way communications in general. For documentation of these utilities, see
the API docs.
IsolateChannelrequires a separate import
package:stream_channel/stream_channel.dartwill now not trigger any platform concerns due to importing
jsonDocumenttop level is still available.
.caston the transformed channel instead.
package:stream_channel/isolate_channel.dart. This will be the required import in the next release.
2.0.0or newer SDK.
- Internal style changes.
- Set max SDK version to
<3.0.0, and adjust other dependencies.
- Fix Dart 2 runtime types in
- Update SDK version to 2.0.0-dev.17.0.
- Add a type argument to
Fix a Dart 2 issue with inner stream transformation in
Fix a Dart 2 issue with
- Fix an issue with
JsonDocumentTransformer.bindwhere it created an internal stream channel which didn't get a properly inferred type for its
- Fix a race condition in
MultiChannelwhere messages from a remote virtual channel could get dropped if the corresponding local channel wasn't registered quickly enough.
- Declare support for
- Fix the type of
StreamChannel.transform(). This previously inverted the generic parameters, so it only really worked with transformers where both generic types were identical.
Disconnector.disconnect()now returns a future that completes when all the inner
StreamSink.close()futures have completed.
new StreamChannel.withCloseGuarantee()to provide the specific guarantee that closing the sink causes the stream to close before it emits any more events. This is the only guarantee that isn't automatically preserved when transforming a channel.
StreamChannelTransformers provided by the
stream_channelpackage now properly provide the guarantee that closing the sink causes the stream to close before it emits any more events
StreamChannel.cast(), which soundly coerces the generic type of a channel.
StreamChannelTransformer.typed(), which soundly coerces the generic type of a transformer.
- Fix all strong-mode errors and warnings.
IsolateChannelslightly more efficient.
MultiChannelfollow the stream channel rules.
Disconnector, a transformer that allows the caller to disconnect the transformed channel.
new StreamChannel.withGuarantees(), which creates a channel with extra wrapping to ensure that it obeys the stream channel guarantees.
StreamChannelController, which can be used to create custom
- Fix the type annotation for
StreamChannel.changeSink()to support changing only the stream or only the sink of a channel.
Be more explicit about
JsonDocumentTransformer's error-handling behavior.
MultiChannel's constructor to take a
StreamChannel. This is technically a breaking change, but since 1.0.0 was only released an hour ago, we're treating it as a bug fix.
- Initial version
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies: stream_channel: ^2.0.0
2. Install it
You can install packages from the command line:
$ pub get
$ flutter pub get
Alternatively, your editor might support
pub get or
flutter pub get.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
We analyzed this package on Jun 5, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.8.2
- pana: 0.13.8-dev
lib/stream_channel.dart. (-1.99 points)
lib/stream_channel.dart reported 4 hints:
line 129 col 13: 'CastError' is deprecated and shouldn't be used. Use TypeError instead.
line 130 col 30: 'CastError' is deprecated and shouldn't be used. Use TypeError instead.
line 179 col 24: 'typed' is deprecated and shouldn't be used. Use stream.cast instead.
line 179 col 60: 'typed' is deprecated and shouldn't be used. Use StreamController
Package is getting outdated. (-18.90 points)
The package was last published 62 weeks ago.
Maintain an example. (-10 points)
Create a short demo in the
example/ directory to show how to use this package.
Common filename patterns include
stream_channel.dart. Packages with multiple examples should provide
For more information see the pub package layout conventions.
The package description is too short. (-10 points)
Add more detail to the
description field of
pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.