/* ZiK */ import 'dart:async'; import 'package:flutter/cupertino.dart'; typedef ChildProvider = Widget Function(BuildContext context, E? data); class Updater extends StatelessWidget{ final ChildProvider childProvider; StreamController? sink; T? initialData; List _history = []; Stream? _stream; Updater({T? initialData, required this.childProvider}){ this.sink = StreamController(); this.initialData = initialData; _stream = this.sink?.stream; } @override Widget build(BuildContext context) { return StreamBuilder( initialData: this.initialData, stream: _stream, builder: (ctx, snapshot){ return childProvider(context, snapshot.data); }); } pushData(T? data) { _history.add(data); sink?.sink.add(data); } List getDataHistory() => _history; T? getLatestData() => _history.last; }