import 'dart:async'; import 'package:flutter/material.dart'; class StreamStateValue { Stream 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 extends State { List subs = []; void initStateValue(StreamStateValue streamVal) { subs.add(streamVal.initialize(setState)); } @override void dispose() { super.dispose(); for(StreamSubscription sub in subs) { sub.cancel(); } } }