Skip to content

A Flutter package providing a Subject Event Channel that allows seamless communication between Flutter and platform-specific code using various types of RxDart Subjects.

License

Notifications You must be signed in to change notification settings

m7mdra/rx_event_channel

Repository files navigation

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 .

Add to your project:

dependencies:  
 rx_event_channel: ^1.0.0

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.

About

A Flutter package providing a Subject Event Channel that allows seamless communication between Flutter and platform-specific code using various types of RxDart Subjects.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published