import 'package:flutter_bloc/flutter_bloc.dart'; import '../models/models.dart'; // Events sealed class NavigationEvent {} class NavigateTo extends NavigationEvent { final AppScreen screen; final Book? selectedBook; final Book? prefilledData; NavigateTo(this.screen, {this.selectedBook, this.prefilledData}); } // State class NavigationState { final AppScreen screen; final Book? selectedBook; final Book? prefilledData; const NavigationState({ this.screen = AppScreen.library, this.selectedBook, this.prefilledData, }); NavigationState copyWith({ AppScreen? screen, Book? Function()? selectedBook, Book? Function()? prefilledData, }) { return NavigationState( screen: screen ?? this.screen, selectedBook: selectedBook != null ? selectedBook() : this.selectedBook, prefilledData: prefilledData != null ? prefilledData() : this.prefilledData, ); } } // Bloc class NavigationBloc extends Bloc { NavigationBloc() : super(const NavigationState()) { on((event, emit) { emit( NavigationState( screen: event.screen, selectedBook: event.selectedBook ?? state.selectedBook, prefilledData: event.prefilledData, ), ); }); } }