event
Create lightweight custom Events, that allow interested subscribers to be notified that something has happened.
3.1.0
17K downloads/mo
#2354 most downloaded on pub.dev
aryehof/dart-event
What this package is like to depend on
Last release 2 years ago
no release in 18 months
Ships unpredictably
gaps range from 8 days to 2.6 years
Nearly every release is documented
notes for 19 of 21 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
21 releases · first in 2020
0 releases in the last 12 months
see the full history below
Release timeline
21 releases · Jan 2020 to Sep 2024Releases
latest 21-
3.1.010 Sep 2024Release notes
Open source →- Minor internal changes
- Diagnostic logging is available. See the new
Diagnosticssection inREADME.mdand the example application for further information. - Both the
subscribe()andbroadcast()Event methods produce diagnostic messages at Severitydebug. To output these messages use the showLog() method with Severitydebug. See the example application.
// Example diagnostics logging output Event (debug): 2024-09-10 11:37:49.665124Z Subscribed to Event "countChanged:Event<EventArgs>" Event (debug): 2024-09-10 11:37:49.675925Z Broadcast Event "countChanged:Event<EventArgs>"Release notes
Open source →-
Minor internal changes
-
Diagnostic logging is available. See the new Diagnostics section in README.md and the example application for further information.
-
Both the subscribe() and broadcast() Event methods produce diagnostic messages at Severity debug . To output these messages use the showLog() method with Severity debug . See the example application.
// Example diagnostics logging output Event (debug): 2024-09-10 11:37:49.665124Z Subscribed to Event "countChanged:Event<EventArgs>" Event (debug): 2024-09-10 11:37:49.675925Z Broadcast Event "countChanged:Event<EventArgs>"
-
3.0.107 Aug 2024Nothing published for this version
-
3.0.007 Aug 2024Release notes
Open source →This version has BREAKING CHANGES
- Minimum Dart sdk dependency is now 3.4.0
- An EventArgs instance is created and broadcast automatically if none provided, i.e.
var e = Event(); // is equivalent to... var e = Event<EventArgs>();- An Event can have a name specified. Some code might be subscribed to more than one Event, so this lets one know which Event caused the code to run.
var e = Event("CountUpdatedEvent"); e.subscribe((args) => print(args.eventName)); // outputs "null" until the event is broadcast. e.broadcast(); // outputs "CountUpdatedEvent"- EventArgs includes two accessible values:- eventName and whenOccurred. Both have a default value of
null, and are only populated when the Event is broadcast.
// Example without Event name var e = Event(); e.subscribe((args) { print(args.eventName); // outputs null print(args.whenOccurred); // outputs time of broadcast }; e.broadcast(); // Example specifying an Event name var e = Event("myEvent"); e.subscribe((args) { print(args.eventName); // outputs "myEvent" print(args.whenOccurred); // outputs time of broadcast }; e.broadcast();- The WhenWhy EventArg derived class is DEPRECATED and removed. Use the EventArgs whenOccurred property instead.
- The + and - equivalents to subscribe() and unsubscribe() have been DEPRECATED and removed for simplicity.
- A custom ArgsError is thrown if an Event is broadcast() without an appropriate argument
var e = Event<CustomEventArgs>(); // following throws an ArgsError because broadcast() // specifies no CustomEventArgs e.broadcast(); // In this case, the ArgsError message shown would be... // "Incorrect args being broadcast - args should be a CustomEventArgs" // instead, following is correct e.broadcast(CustomEventArgs("hello"));- A new property genericType has been added to the Event class. Gets the generic type of the Event, e.g.
var e = Event<Value<int>>(); assert(e.genericType == Value<int>);- The broadcast() method now returns a bool, indicating if the broadcast had subscribers or not. No subscribers means the broadcast() method is effectively ignored.
var e = Event(); // no subscribers var hadEffect = e.broadcast(); assert(hadEffect == false);- A syntactical alternative to the
broadcastmethod -notifySubscribers- has been added.
Release notes
Open source →This version has BREAKING CHANGES
-
Minimum Dart sdk dependency is now 3.4.0
-
An EventArgs instance is created and broadcast automatically if none provided, i.e.
var e = Event(); // is equivalent to... var e = Event<EventArgs>();
- An Event can have a name specified. Some code might be subscribed to more than one Event, so this lets one know which Event caused the code to run.
var e = Event("CountUpdatedEvent"); e.subscribe((args) => print(args.eventName)); // outputs "null" until the event is broadcast. e.broadcast(); // outputs "CountUpdatedEvent"
- EventArgs includes two accessible values:- eventName and whenOccurred. Both have a default value of null , and are only populated when the Event is broadcast.
// Example without Event name var e = Event(); e.subscribe((args) { print(args.eventName); // outputs null print(args.whenOccurred); // outputs time of broadcast }; e.broadcast();
// Example specifying an Event name var e = Event("myEvent"); e.subscribe((args) { print(args.eventName); // outputs "myEvent" print(args.whenOccurred); // outputs time of broadcast }; e.broadcast();
-
The WhenWhy EventArg derived class is DEPRECATED and removed. Use the EventArgs whenOccurred property instead.
-
The + and - equivalents to subscribe() and unsubscribe() have been DEPRECATED and removed for simplicity.
-
A custom ArgsError is thrown if an Event is broadcast() without an appropriate argument
var e = Event<CustomEventArgs>(); // following throws an ArgsError because broadcast() // specifies no CustomEventArgs e.broadcast(); // In this case, the ArgsError message shown would be... // "Incorrect args being broadcast - args should be a CustomEventArgs"
// instead, following is correct e.broadcast(CustomEventArgs("hello"));
- A new property genericType has been added to the Event class. Gets the generic type of the Event, e.g.
var e = Event<Value<int>>(); assert(e.genericType == Value<int>);
- The broadcast() method now returns a bool, indicating if the broadcast had subscribers or not. No subscribers means the broadcast() method is effectively ignored.
var e = Event(); // no subscribers var hadEffect = e.broadcast(); assert(hadEffect == false);
- A syntactical alternative to the broadcast method - notifySubscribers - has been added.
-
2.1.211 Jan 2022 -
2.1.110 Jan 2022Nothing published for this version
-
2.1.010 Jan 2022Release notes
Open source →-
Improved README
-
** Breaking Changes **
StdEventArgsrenamed toWhenWhyto better indicate what the arguments represent.
var e = Event<WhenWhy>(); e.broadcast(WhenWhy(description: 'some info'));- EventArgs
ValueandValuesnow derive fromEventArgsrather than WhenWhy (formerly StdEventArgs).
Release notes
Open source →Improved README
** Breaking Changes **
- StdEventArgs renamed to WhenWhy to better indicate what the arguments represent.
var e = Event<WhenWhy>(); e.broadcast(WhenWhy(description: 'some info'));
- EventArgs Value and Values now derive from EventArgs rather than WhenWhy (formerly StdEventArgs).
-
-
2.0.510 May 2021Release notes
Open source →- Fix issue #5. Support the ability to unsubscribeAll within an Event handler.
-
2.0.410 May 2021Release notes
Open source →GenericEventArg1andGenericEventArg2Event argument types renamed toValueandValues. Better reflects common usage.Valuessupports two values, whileValuesupports one.
var e = Event<Value>(); // Event will include a value as an argument e.broadcast(Value(39)); // type of the Value inferred to be an int // equivalent to var e = Event<Value<int>>(); // type of the Value can also be explicit e.broadcast(Value(39));- Updated tests.
Release notes
Open source →- GenericEventArg1 and GenericEventArg2 Event argument types renamed to Value and Values . Better reflects common usage. Values supports two values, while Value supports one.
var e = Event<Value>(); // Event will include a value as an argument e.broadcast(Value(39)); // type of the Value inferred to be an int
// equivalent to
var e = Event<Value<int>>(); // type of the Value can also be explicit e.broadcast(Value(39));
- Updated tests.
-
2.0.310 May 2021Release notes
Open source →- Make the list of handlers a non-nullable Type that is created lazily using the new 'late' keyword.
This simplifies the code substantially, because no null checks etc. are required.
-
2.0.208 May 2021Release notes
Open source →- Fixed issue #7 https://github.com/aryehof/dart-event/issues/7
- Updated tests.
-
2.0.108 Mar 2021 -
2.0.008 Mar 2021Release notes
Open source →- Null safe. (Min SDK version 2.12.0)
- Changes to README content and layout.
-
1.1.528 Feb 2021 -
1.1.411 Jun 2020Release notes
Open source →-
Added a
subscribeStreammethod to Event, which supports the broadcasting of Events to a DartStream[StreamSink].This allows a sequence of broadcast Events to be represented and manipulated as a Dart
Stream. The rich range of mechanisms to filter and manipulate Streams become available.Remember that the supplied [StreamSink] should be closed when no longer needed.
// Example var e = Event(); var sc = StreamController(); e.subscribeStream(sc.sink); e.broadcast(); sc.stream.listen((e) => print('boom')); sc.close();
Release notes
Open source →Added a subscribeStream method to Event, which supports the broadcasting of Events to a Dart Stream [StreamSink].
This allows a sequence of broadcast Events to be represented and manipulated as a Dart Stream . The rich range of mechanisms to filter and manipulate Streams become available.
Remember that the supplied [StreamSink] should be closed when no longer needed.
// Example var e = Event(); var sc = StreamController();
e.subscribeStream(sc.sink); e.broadcast();
sc.stream.listen((e) => print('boom')); sc.close();
-
-
1.1.317 Feb 2020 -
1.1.209 Feb 2020Release notes
Open source →- EventArgs changes
- Added
BasicEventArgsas a standardEventArgsderived type. It includes awhenOccurredfield that contains the date and time the Event wasbroadcast, as well as an optionaldescriptionfield. - Renamed
EventArgs1andEventArgs2toGenericEventArgs1andGenericEventArgs2respectively, to better indicate their purpose. Both are now derived fromBasicEventArgs, meaning that they havewhenOccurredand (optional)descriptionfields. - Improvements to documentation
- Added
- Minor improvements to Event documentation.
Release notes
Open source →-
EventArgs changes
-
Added BasicEventArgs as a standard EventArgs derived type. It includes a whenOccurred field that contains the date and time the Event was broadcast , as well as an optional description field.
-
Renamed EventArgs1 and EventArgs2 to GenericEventArgs1 and GenericEventArgs2 respectively, to better indicate their purpose. Both are now derived from BasicEventArgs , meaning that they have whenOccurred and (optional) description fields.
-
Improvements to documentation
-
Minor improvements to Event documentation.
- EventArgs changes
-
1.1.103 Feb 2020Release notes
Open source →- Add new method
unsubscribeAll, to unsubscribe all subscribers (handlers).
Release notes
Open source →- Add new method unsubscribeAll , to unsubscribe all subscribers (handlers).
- Add new method
-
1.1.030 Jan 2020Release notes
Open source →Breaking Change
The function signature for an Event has been simplified. The
senderargument has been removed, leaving only the need to provide an optionalargumentderived from typeEventArgs.The
senderargument was previously intended to be used to provide the source of the Event, or the object in which the Event was declared, to a subscriber. This can be equally well done within an EventArg passed as an argument to a subscriber.// Before // subscribe to onValueChanged Event myCounter.onValueChanged + (sender, args) => print('before'); // Now // subscribe to onValueChanged Event myCounter.onValueChanged + (args) => print('after');Other Breaking Changes
- Renamed
addHandlerandremoveHandlermethods tosubscribeandunsubscriberespectively. - Renamed
raisemethods tobroadcast. - Method
broadcastWithSubjectremoved to reflect to removal ofsenderdescribed above. - The
countmethod has been renamed to `subscriberCount'
Other
- Two general purpose EventArg derived classes (
EventArgs1andEventArgs2) have been included, which offers a quick alternative to producing your own custom EventArgs class.
EventArgs1 supports one generic value, while EventArgs2 supports two. Example:-
// EventArgs1 (one value) var e = Event<EventArgs1<String>>(); e.subscribe((args) => print(args.value)); e.broadcast(EventArgs1('hello')); // prints hello // EventArgs2 (two values) var e = Event<EventArgs2<String, int>>(); e.subscribe((args) => print('${args.value1} - ${args.value2}')); e.broadcast(EventArgs2('boom', 37)); // prints boom - 37Release notes
Open source →Breaking Change
The function signature for an Event has been simplified. The sender argument has been removed, leaving only the need to provide an optional argument derived from type EventArgs .
The sender argument was previously intended to be used to provide the source of the Event, or the object in which the Event was declared, to a subscriber. This can be equally well done within an EventArg passed as an argument to a subscriber.
// Before // subscribe to onValueChanged Event myCounter.onValueChanged + (sender, args) => print('before');
// Now // subscribe to onValueChanged Event myCounter.onValueChanged + (args) => print('after');
Other Breaking Changes
-
Renamed addHandler and removeHandler methods to subscribe and unsubscribe respectively.
-
Renamed raise methods to broadcast .
-
Method broadcastWithSubject removed to reflect to removal of sender described above.
-
The count method has been renamed to `subscriberCount'
Other
- Two general purpose EventArg derived classes ( EventArgs1 and EventArgs2 ) have been included, which offers a quick alternative to producing your own custom EventArgs class.
EventArgs1 supports one generic value, while EventArgs2 supports two. Example:-
// EventArgs1 (one value) var e = Event<EventArgs1<String>>(); e.subscribe((args) => print(args.value)); e.broadcast(EventArgs1('hello')); // prints hello
// EventArgs2 (two values) var e = Event<EventArgs2<String, int>>(); e.subscribe((args) => print('${args.value1} - ${args.value2}')); e.broadcast(EventArgs2('boom', 37)); // prints boom - 37
- Renamed
-
1.0.323 Jan 2020 -
1.0.223 Jan 2020Release notes
Open source →- Updated reference to Flutter [EventSubscriber] in the README.
- Minor documentation improvements
Release notes
Open source →-
Updated reference to Flutter EventSubscriber in the README.
-
Minor documentation improvements
-
1.0.023 Jan 2020Release notes
Open source →- Initial release
48
likes
150
points
16.5k
downloads
Documentation
API reference
Publisher
aryehoffman.com
Weekly Downloads
Metadata
Create lightweight custom Events, that allow interested subscribers to be notified that something has happened.
Repository (GitHub)
View/report issues
License
Apache-2.0 ( license )
More
Packages that depend on event
← Metadata
48
likes
150
points
16.5k
downloads
Documentation
API reference
Publisher
aryehoffman.com
Weekly Downloads
Metadata
Create lightweight custom Events, that allow interested subscribers to be notified that something has happened.
Repository (GitHub)
View/report issues
License
Apache-2.0 ( license )
More
Packages that depend on event
Back