rx_event_channel 1.0.0 copy "rx_event_channel: ^1.0.0" to clipboard
rx_event_channel: ^1.0.0 copied to clipboard

Allows communication between Flutter and platform-specific code using various types of RxDart Subjects

SubjectEventChannel #

SubjectEventChannel is a Dart class that extends Flutter's EventChannel to facilitate asynchronous communication between Flutter and platform-specific code using RxDart's Subject types. This class enables the management and broadcasting of events through various types of RxDart subjects, such as BehaviorSubject, ReplaySubject, and PublishSubject.

Overview #

The SubjectEventChannel class is designed for efficient event handling and communication with platform-specific code. It leverages RxDart's subjects to offer flexible event management strategies, including buffering and replaying of events.

Constructors #

SubjectEventChannel #

const SubjectEventChannel(
  this.name,
  this.subject, {
  this.codec = const StandardMethodCodec(),
  this.maxSize,
  BinaryMessenger? binaryMessenger,
})
  • Parameters:
Parameter Type Description
name String The name of the event channel used for communication with the platform.
subject Subject The RxDart Subject used for managing events. Can be BehaviorSubject, ReplaySubject, or PublishSubject.
codec MethodCodec Optional. Specifies how to encode and decode messages between Dart and the platform. Defaults to StandardMethodCodec().
maxSize int? Optional. For ReplaySubject, specifies the maximum number of events to retain. If null, no limit is applied.
binaryMessenger BinaryMessenger? Optional. The binary messenger for sending/receiving messages. If null, it defaults to the appropriate messenger based on runtime context.

SubjectEventChannel.behavior #

SubjectEventChannel.behavior(
  this.name, {
  this.sync = false,
  this.codec = const StandardMethodCodec(),
  BinaryMessenger? binaryMessenger,
})
  • Parameters:
Parameter Type Description
name String The name of the event channel used for communication with the platform.
sync bool Optional. Determines if the subject should be synchronous or asynchronous. Defaults to false.
codec MethodCodec Optional. Codec for encoding/decoding method calls.
binaryMessenger BinaryMessenger? Optional. The binary messenger for sending/receiving messages. If null, it defaults to the appropriate messenger based on runtime context.

SubjectEventChannel.replay #

SubjectEventChannel.replay(
  this.name, {
  this.sync = false,
  this.maxSize,
  this.codec = const StandardMethodCodec(),
  BinaryMessenger? binaryMessenger,
})
  • Parameters:
Parameter Type Description
name String The name of the event channel used for communication with the platform.
sync bool Optional. Determines if the subject should be synchronous or asynchronous. Defaults to false.
maxSize int? Optional. The buffer size for storing old events in ReplaySubject.
codec MethodCodec Optional. Codec for encoding/decoding method calls.
binaryMessenger BinaryMessenger? Optional. The binary messenger for sending/receiving messages. If null, it defaults to the appropriate messenger based on runtime context.

SubjectEventChannel.publish #

SubjectEventChannel.publish(
  this.name, {
  this.sync = false,
  this.codec = const StandardMethodCodec(),
  BinaryMessenger? binaryMessenger,
})
  • Parameters:
Parameter Type Description
name String The name of the event channel used for communication with the platform.
sync bool Optional. Determines if the subject should be synchronous or asynchronous. Defaults to false.
codec MethodCodec Optional. Codec for encoding/decoding method calls.
binaryMessenger BinaryMessenger? Optional. The binary messenger for sending/receiving messages. If null, it defaults to the appropriate messenger based on runtime context.

Bring your own subject: #

You can supply a custom implementation of subject class by simply using default constructor:

final subject = XYSubject();
final eventChannel = SubjectEventChannel('name', subject);

Usage Example #

see example_plugin project for more comprehensive example .

License #

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing #

If you would like to contribute to this project, please fork the repository and submit a pull request with your changes. For major changes, please open an issue first to discuss what you would like to change.

TODO:

  • ✅ Testing.
  • ❌ Improve documentation.
  • ❌ publish to pub.dev.
1
likes
140
pub points
17%
popularity

Publisher

unverified uploader

Allows communication between Flutter and platform-specific code using various types of RxDart Subjects

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, rxdart

More

Packages that depend on rx_event_channel