@@ -14,7 +14,7 @@ import 'utils.dart';
1414// ignore_for_file: close_sinks
1515
1616/// Defines which flatMap behavior should be applied whenever a new values is emitted.
17- enum FlatMapPolicy {
17+ enum FlattenStrategy {
1818 /// uses [FlatMapExtension.flatMap] .
1919 merge,
2020
@@ -28,17 +28,17 @@ enum FlatMapPolicy {
2828 first,
2929}
3030
31- extension _FlatMapWithPolicy <T > on Stream <T > {
32- Stream <R > flatMapWithPolicy <R >(
33- FlatMapPolicy policy , Stream <R > Function (T ) transform) {
34- switch (policy ) {
35- case FlatMapPolicy .merge:
31+ extension _FlatMapWithStrategy <T > on Stream <T > {
32+ Stream <R > flatMapWithStrategy <R >(
33+ FlattenStrategy strategy , Stream <R > Function (T ) transform) {
34+ switch (strategy ) {
35+ case FlattenStrategy .merge:
3636 return flatMap (transform);
37- case FlatMapPolicy .concat:
37+ case FlattenStrategy .concat:
3838 return asyncExpand (transform);
39- case FlatMapPolicy .latest:
39+ case FlattenStrategy .latest:
4040 return switchMap (transform);
41- case FlatMapPolicy .first:
41+ case FlattenStrategy .first:
4242 return exhaustMap (transform);
4343 }
4444 }
@@ -86,10 +86,10 @@ class LoaderBloc<Content extends Object> {
8686 Stream <Content > Function ()? refresherFunction,
8787 Content ? initialContent,
8888 void Function (String )? logger,
89- FlatMapPolicy loaderFlatMapPolicy =
90- FlatMapPolicy .latest, // default is `switchMap`
91- FlatMapPolicy refreshFlatMapPolicy =
92- FlatMapPolicy .first, // default is `exhaustMap`
89+ FlattenStrategy loaderFlattenStrategy =
90+ FlattenStrategy .latest, // default is `switchMap`
91+ FlattenStrategy refreshFlattenStrategy =
92+ FlattenStrategy .first, // default is `exhaustMap`
9393 }) {
9494 refresherFunction ?? = () => Stream <Content >.empty ();
9595
@@ -100,8 +100,8 @@ class LoaderBloc<Content extends Object> {
100100 final controllers = < StreamController <dynamic >> [fetchS, refreshS, messageS];
101101
102102 /// Input actions to state
103- final fetchChanges = fetchS.stream.flatMapWithPolicy (
104- loaderFlatMapPolicy ,
103+ final fetchChanges = fetchS.stream.flatMapWithStrategy (
104+ loaderFlattenStrategy ,
105105 (_) => Rx .defer (loaderFunction)
106106 .doOnData (
107107 (content) => messageS.add (LoaderMessage .fetchSuccess (content)))
@@ -112,16 +112,16 @@ class LoaderBloc<Content extends Object> {
112112 .onErrorReturnWith (
113113 (e, _) => LoaderPartialStateChange .fetchFailure (e)),
114114 );
115- final refreshChanges = refreshS.stream.flatMapWithPolicy (
116- refreshFlatMapPolicy ,
115+ final refreshChanges = refreshS.stream.flatMapWithStrategy (
116+ refreshFlattenStrategy ,
117117 (completer) => Rx .defer (refresherFunction! )
118118 .doOnData (
119119 (content) => messageS.add (LoaderMessage .refreshSuccess (content)))
120120 .map <LoaderPartialStateChange <Content >>(
121121 (content) => LoaderPartialStateChange .refreshSuccess (content))
122122 .doOnError ((e, s) => messageS.add (LoaderMessage .refreshFailure (e, s)))
123123 .onErrorResumeNext (Stream .empty ())
124- .doOnDone (() => completer.complete ()),
124+ .doOnCancel (() => completer.complete ()),
125125 );
126126
127127 final initialState = LoaderState .initial (content: initialContent);
0 commit comments