m3_lightmeter/lib/screens/metering/components/shared/ev_source_base/bloc_base_ev_source.dart

28 lines
1 KiB
Dart
Raw Normal View History

2022-12-15 11:00:28 +00:00
import 'dart:async';
2023-06-12 14:10:40 +00:00
import 'package:flutter/material.dart';
2022-12-15 11:00:28 +00:00
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:lightmeter/screens/metering/communication/bloc_communication_metering.dart';
2023-01-26 15:03:48 +00:00
import 'package:lightmeter/screens/metering/communication/state_communication_metering.dart'
as communication_states;
2022-12-15 11:00:28 +00:00
abstract class EvSourceBlocBase<E, S> extends Bloc<E, S> {
2022-12-15 11:00:28 +00:00
final MeteringCommunicationBloc communicationBloc;
late final StreamSubscription<communication_states.SourceState> _communicationSubscription;
EvSourceBlocBase(this.communicationBloc, super.initialState) {
2022-12-15 11:00:28 +00:00
_communicationSubscription = communicationBloc.stream
.where((event) => event is communication_states.SourceState)
.map((event) => event as communication_states.SourceState)
.listen(onCommunicationState);
}
@override
Future<void> close() async {
await _communicationSubscription.cancel();
return super.close();
2022-12-15 11:00:28 +00:00
}
2023-06-12 14:10:40 +00:00
@visibleForTesting
2022-12-15 11:00:28 +00:00
void onCommunicationState(communication_states.SourceState communicationState);
}