- Created 8 separate BLoCs (Home, Library, BookDetails, AddBook, Scanner, Categories, Wishlist, Settings) - Each BLoC has its own event, state, and bloc files - Added 70 comprehensive tests covering all BLoC functionality - All tests passing (70/70) - Fixed linting issues and updated deprecated APIs - Improved code organization and maintainability
40 lines
1.1 KiB
Dart
40 lines
1.1 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'scanner_event.dart';
|
|
import 'scanner_state.dart';
|
|
|
|
class ScannerBloc extends Bloc<ScannerEvent, ScannerState> {
|
|
ScannerBloc() : super(ScannerState.initial()) {
|
|
on<StartScanning>(_onStartScanning);
|
|
on<StopScanning>(_onStopScanning);
|
|
on<BookDetected>(_onBookDetected);
|
|
on<ClearDetectedBook>(_onClearDetectedBook);
|
|
}
|
|
|
|
void _onStartScanning(StartScanning event, Emitter<ScannerState> emit) {
|
|
emit(state.copyWith(
|
|
isScanning: true,
|
|
isProcessing: false,
|
|
errorMessage: null,
|
|
));
|
|
}
|
|
|
|
void _onStopScanning(StopScanning event, Emitter<ScannerState> emit) {
|
|
emit(state.copyWith(isScanning: false));
|
|
}
|
|
|
|
void _onBookDetected(BookDetected event, Emitter<ScannerState> emit) {
|
|
emit(state.copyWith(
|
|
detectedBookData: event.bookData,
|
|
isProcessing: true,
|
|
isScanning: false,
|
|
));
|
|
}
|
|
|
|
void _onClearDetectedBook(ClearDetectedBook event, Emitter<ScannerState> emit) {
|
|
emit(state.copyWith(
|
|
isScanning: false,
|
|
clearDetectedBookData: true,
|
|
isProcessing: false,
|
|
));
|
|
}
|
|
} |