diff options
Diffstat (limited to 'lib/helpers/StreamState.dart')
| -rw-r--r-- | lib/helpers/StreamState.dart | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/helpers/StreamState.dart b/lib/helpers/StreamState.dart new file mode 100644 index 0000000..3e329ed --- /dev/null +++ b/lib/helpers/StreamState.dart @@ -0,0 +1,31 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; + +class StreamStateValue<Value> { + Stream<Value> stream$; + Value value; + + StreamStateValue({ this.stream$, this.value }) {} + + StreamSubscription initialize(void Function(void Function()) setState) { + return stream$.listen((Value v) { + setState(() { value = v; }); + }); + } +} + +abstract class StreamState<T extends StatefulWidget> extends State<T> { + List<StreamSubscription> subs = <StreamSubscription>[]; + + void initStateValue<V>(StreamStateValue<V> streamVal) { + subs.add(streamVal.initialize(setState)); + } + + @override + void dispose() { + super.dispose(); + for(StreamSubscription sub in subs) { + sub.cancel(); + } + } +} |
