diff options
| author | Akshay Nair <phenax5@gmail.com> | 2020-06-03 14:39:52 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2020-06-03 14:39:52 +0530 |
| commit | 871706b606c77eeac13bfcea67c3ce1d71203d2c (patch) | |
| tree | 82d3ca8b51cc001606f5412a20730a813b7d9e2d /lib/helpers | |
| parent | c745b90dfdc97a2e04582051b01fde83883d8e3e (diff) | |
| download | daft-launcher-871706b606c77eeac13bfcea67c3ce1d71203d2c.tar.gz daft-launcher-871706b606c77eeac13bfcea67c3ce1d71203d2c.zip | |
Adds shared preferences for config/theme storage + refactors a streamstate
Diffstat (limited to '')
| -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(); + } + } +} |
