diff --git a/lib/src/presenting/src/widgets/presenter_controller.widget.dart b/lib/src/presenting/src/widgets/presenter_controller.widget.dart index ecd83e2..11330ea 100644 --- a/lib/src/presenting/src/widgets/presenter_controller.widget.dart +++ b/lib/src/presenting/src/widgets/presenter_controller.widget.dart @@ -4,16 +4,26 @@ import 'dart:async'; /// A contrller used to control Futures/Streams to present them effeciantly. class AstromicPresenterController { late final Map _futures; - late final Map _streams; - + late final Map args)?> _streams; late final Map> _futureRefreshers; + + AstromicPresenterController({ Map futures = const {}, - Map streams = const {}, + Map args)?> streams = const {}, }) : _futures = futures.map((k, v) => MapEntry(k, (v.$1, v.$2))), _futureRefreshers = futures.map((k, v) => MapEntry(k, StreamController.broadcast())), _streams = streams; + + Map providedArguments = {}; + void setProvidedArguments(Map args){ + providedArguments = args; + } + + Map getProvidedArguments(){ + return providedArguments; + } /// Get the current cycle of this future ID. int getFutureCycle(String id) { @@ -32,7 +42,7 @@ class AstromicPresenterController { Stream? getStream(String id) { assert(_streams.containsKey(id), 'did you add a stream with this id?'); - return _streams[id]! as Stream?; + return _streams[id]!(getProvidedArguments()) as Stream?; } /// Get the refresh stream of a future using it's ID. diff --git a/lib/src/presenting/src/widgets/stream_presenter.widget.dart b/lib/src/presenting/src/widgets/stream_presenter.widget.dart index 4e646dd..cd11c47 100644 --- a/lib/src/presenting/src/widgets/stream_presenter.widget.dart +++ b/lib/src/presenting/src/widgets/stream_presenter.widget.dart @@ -19,6 +19,7 @@ class AstromicStreamPresenter extends StatefulWidget { //SECTION - Widget Arguments final AstromicPresenterController controller; final String id; + final Map? neededArguments; // final Map? r)> stateBuilder; final AstromicPresenterConfiguration? configuration; @@ -30,6 +31,7 @@ class AstromicStreamPresenter extends StatefulWidget { required this.id, required this.stateBuilder, this.configuration, + this.neededArguments, }); @override @@ -122,7 +124,8 @@ class _AstromicStreamPresenterState extends State> //S1 -- Method to reinitialize or update `_future` with a new instance void _initializeStream() { - _stream = widget.controller.getStream(widget.id)?.asyncMap((dynamic result) => result); + widget.controller.setProvidedArguments(widget.neededArguments ?? {}); + _stream = widget.controller.getStream(widget.id)?.asyncMap((dynamic result) => result as T?); } //!SECTION