subscribeToFieldBlocs method
Create a subscription to the state of each fieldBloc
in FieldBlocs
,
When any state changes, this fieldBloc
will be revalidated.
This is useful when you have validators
that
uses the state of other fieldBloc
, for example
when you want the correct behavior
of validator that confirms a password
with the password of other fieldBloc
.
Implementation
void subscribeToFieldBlocs(List<FieldBloc> fieldBlocs) {
_revalidateFieldBlocsSubscription?.cancel();
// TODO: When async validation is in progress and auto validate is off this method is broken
// because it emit a completed async validation
// TODO: It does not manage MultiFieldBloc fields
if (fieldBlocs.isNotEmpty) {
_revalidateFieldBlocsSubscription = Rx.combineLatest<dynamic, void>(
fieldBlocs.whereType<SingleFieldBloc>().toList().map(
(state) {
return state.stream.map<dynamic>((state) => state.value).distinct();
},
),
(_) {},
).listen((_) {
if (_autoValidate) {
_validate();
} else {
emit(state.copyWith(
isValidated: false,
isValidating: false,
) as State);
}
});
if (_autoValidate) {
_validate();
} else {
emit(state.copyWith(
isValidated: false,
isValidating: false,
) as State);
}
}
}