connectDelegator<DC extends ObjectDataCubit<TFailure, TData> > method
DC
connectDelegator<DC extends ObjectDataCubit<TFailure, TData> >(
- DC dataCubit
Implementation
DC connectDelegator<DC extends ObjectDataCubit<TFailure, TData>>(DC dataCubit) {
dataCubit.stream.listen((singleDataState) {
if (state.notHasData) return;
switch (singleDataState.status) {
case DataStatus.created:
emit(state.copyWith(
allData: state._allData.map((a) {
return a.rebuild((b) => b[a.keys.last + 1] = singleDataState.data);
}),
));
break;
case DataStatus.read:
case DataStatus.updated:
emit(state.copyWith(
allData: state._allData.map((a) {
final entry =
a.entries.firstWhere((entry) => _equalizer(entry.value, singleDataState.data));
return a.rebuild((b) => b[entry.key] = singleDataState.data);
}),
));
break;
case DataStatus.deleted:
emit(state.copyWith(
allData: state._allData.map((a) {
return a.rebuild(
(b) => b.removeWhere((_, value) => _equalizer(value, singleDataState.data)));
}),
));
break;
default:
break;
}
}, onDone: () {
_delegators;
}).addToCloser(this);
return dataCubit;
}