event_stream 0.3.2

event_stream

Introduction

Makes it easier to expose custom events in Dart using the Stream API.

Getting Started

1. Add the following to your project's pubspec.yaml and run


dependencies: event_stream: any


2\. Add the correct import for your project.

import 'package:event_stream/event_stream.dart';


## Example ##

import 'package:event_stream/event_stream.dart';

import 'dart:async';

class ClassWithEvents implements NotifyPropertyChanged { String _someProperty;

final EventStream<PropertyChangedEventArgs> _onPropertyChangedEvent = new EventStream<PropertyChangedEventArgs>(); Stream<PropertyChangedEventArgs> get onPropertyChanged => _onPropertyChangedEvent.stream;

final EventStream _onClosedEvent = new EventStream(); Stream get onClosed => _onClosedEvent.stream;

String get someProperty => _someProperty; set someProperty(String value) { _someProperty = value; _onPropertyChangedEvent.signal(new PropertyChangedEventArgs('someProperty', value)); }

close() { _onClosedEvent.signal(); } }

main() { var c = new ClassWithEvents(); c.onPropertyChanged.listen((PropertyChangedEventArgs<String> args) => print('changed: name=${args.propertyName} value=${args.value}')); c.onClosed.listen((_) => print('closed')); c.someProperty = "test"; c.close(); }


example/example.dart

import 'package:event_stream/event_stream.dart';

import 'dart:async';

class ClassWithEvents implements NotifyPropertyChanged {
  String _someProperty;
  String _someOtherProperty;
  int _someIntProperty;
  
  final EventStream<PropertyChangedEventArgs> _onPropertyChangedEvent = new EventStream<PropertyChangedEventArgs>();
  Stream<PropertyChangedEventArgs> get onPropertyChanged => _onPropertyChangedEvent.stream;
  
  final EventStream _onClosedEvent = new EventStream();
  Stream get onClosed => _onClosedEvent.stream;
  
  String get someProperty => _someProperty;
  set someProperty(String value) {
    _someProperty = value;
    _onPropertyChangedEvent.signal(new PropertyChangedEventArgs('someProperty', value));
  }
  
  String get someOtherProperty => _someOtherProperty;
  set someOtherProperty(String value) {
    _someOtherProperty = value;
    _onPropertyChangedEvent.signal(new PropertyChangedEventArgs('someOtherProperty', value));
  }
  
  int get someIntProperty => _someIntProperty;
  set someIntProperty(int value) {
    _someIntProperty = value;
    _onPropertyChangedEvent.signal(new PropertyChangedEventArgs('someIntProperty', value));
  }
  
  close() {
    _onClosedEvent.signal();
  }
}

main() {
  var c = new ClassWithEvents();
  c.onPropertyChanged.listen((PropertyChangedEventArgs<String> args) => print('listen1: name=${args.propertyName} value=${args.value} type=${args.value.runtimeType}'));
  c.onPropertyChanged.listen((PropertyChangedEventArgs<String> args) => print('listen2: name=${args.propertyName} value=${args.value} type=${args.value.runtimeType}'));
  c.onClosed.listen((_) => print('closed1'));
  c.onClosed.first.whenComplete(() => print('first closed'));
  c.someProperty = "test1";
  c.someOtherProperty = "test1";
  c.someProperty = "test2";
  c.someOtherProperty = "test2";
  c.someIntProperty = 1;
  c.close();
  c.close();
}

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  event_stream: "^0.3.2"

2. Install it

You can install packages from the command line:

$ pub get

Alternatively, your editor might support 'pub get'. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:event_stream/event_stream.dart';

About

Makes it easier to expose custom events using the Stream API.

Author

Email eric@codesmithtools.com Eric J. Smith

Homepage

github.com/ejsmith/event_stream

Documentation

www.dartdocs.org/documentation/event_stream/0.3.2/

Source code (hyperlinked)

www.crossdart.info/p/event_stream/0.3.2/

Uploader

eric@codesmithtools.com

Published

Nov 1, 2013

Share