142 lines
4.7 KiB
Dart
142 lines
4.7 KiB
Dart
/// States for trip-related operations in the TripBloc.
|
|
///
|
|
/// This file defines all possible states that the TripBloc can emit in response
|
|
/// to trip-related events. The states represent different phases of trip
|
|
/// operations including loading, success, error, and data states for trip management.
|
|
///
|
|
/// State Categories:
|
|
/// - **Initial State**: TripInitial
|
|
/// - **Loading States**: TripLoading
|
|
/// - **Success States**: TripLoaded, TripCreated, TripOperationSuccess
|
|
/// - **Error States**: TripError
|
|
///
|
|
/// The states support complete trip lifecycle management with proper feedback
|
|
/// for create, read, update, and delete operations.
|
|
///
|
|
/// All states extend [TripState] and implement [Equatable] for proper
|
|
/// equality comparison and state change detection in the BLoC pattern.
|
|
library;
|
|
import 'package:equatable/equatable.dart';
|
|
import '../../models/trip.dart';
|
|
|
|
/// Base class for all trip-related states.
|
|
///
|
|
/// All trip states must extend this class and implement the [props] getter
|
|
/// for proper equality comparison in the BLoC pattern.
|
|
abstract class TripState extends Equatable {
|
|
const TripState();
|
|
|
|
@override
|
|
List<Object?> get props => [];
|
|
}
|
|
|
|
/// The initial state of the TripBloc before any operations are performed.
|
|
///
|
|
/// This is the default state when the bloc is first created and represents
|
|
/// a clean slate with no trip data loaded or operations in progress.
|
|
class TripInitial extends TripState {}
|
|
|
|
/// State indicating that a trip operation is currently in progress.
|
|
///
|
|
/// This state is emitted when the bloc is performing operations like
|
|
/// loading trips, creating trips, updating trip information, or deleting trips.
|
|
/// UI components can use this state to show loading indicators.
|
|
class TripLoading extends TripState {}
|
|
|
|
/// State containing a list of successfully loaded trips.
|
|
///
|
|
/// This state is emitted when trips have been successfully retrieved
|
|
/// from the repository, either through initial loading or real-time updates.
|
|
/// The UI can use this data to display the list of available trips for the user.
|
|
///
|
|
/// Properties:
|
|
/// [trips]: List of Trip objects that were loaded
|
|
class TripLoaded extends TripState {
|
|
/// The list of loaded trips
|
|
final List<Trip> trips;
|
|
|
|
/// Creates a TripLoaded state.
|
|
///
|
|
/// Args:
|
|
/// [trips]: The list of trips to include in this state
|
|
const TripLoaded(this.trips);
|
|
|
|
@override
|
|
List<Object?> get props => [trips];
|
|
}
|
|
|
|
/// State indicating successful trip creation.
|
|
///
|
|
/// This state is emitted when a new trip has been successfully created.
|
|
/// It contains the ID of the newly created trip and a success message
|
|
/// that can be displayed to the user. This state is typically followed
|
|
/// by automatic reloading of the user's trip list.
|
|
///
|
|
/// Properties:
|
|
/// [tripId]: The unique identifier of the newly created trip
|
|
/// [message]: A success message to display to the user
|
|
class TripCreated extends TripState {
|
|
/// The unique identifier of the newly created trip
|
|
final String tripId;
|
|
|
|
/// Success message for the user
|
|
final String message;
|
|
|
|
/// Creates a TripCreated state.
|
|
///
|
|
/// Args:
|
|
/// [tripId]: The ID of the newly created trip
|
|
/// [message]: Optional success message (defaults to "Trip created successfully")
|
|
const TripCreated({
|
|
required this.tripId,
|
|
this.message = 'Trip created successfully',
|
|
});
|
|
|
|
@override
|
|
List<Object?> get props => [tripId, message];
|
|
}
|
|
|
|
/// State indicating successful completion of a trip operation.
|
|
///
|
|
/// This state is emitted when operations like updating or deleting trips
|
|
/// have completed successfully. It contains a message that can be displayed
|
|
/// to inform the user of the successful operation. This state is typically
|
|
/// followed by automatic reloading of the user's trip list.
|
|
///
|
|
/// Properties:
|
|
/// [message]: A success message describing the completed operation
|
|
class TripOperationSuccess extends TripState {
|
|
/// The success message to display to the user
|
|
final String message;
|
|
|
|
/// Creates a TripOperationSuccess state.
|
|
///
|
|
/// Args:
|
|
/// [message]: The success message to display
|
|
const TripOperationSuccess(this.message);
|
|
|
|
@override
|
|
List<Object?> get props => [message];
|
|
}
|
|
|
|
/// State indicating that a trip operation has failed.
|
|
///
|
|
/// This state is emitted when any trip operation encounters an error.
|
|
/// It contains an error message that can be displayed to the user to
|
|
/// explain what went wrong during the operation.
|
|
///
|
|
/// Properties:
|
|
/// [message]: An error message describing what went wrong
|
|
class TripError extends TripState {
|
|
/// The error message to display to the user
|
|
final String message;
|
|
|
|
/// Creates a TripError state.
|
|
///
|
|
/// Args:
|
|
/// [message]: The error message to display
|
|
const TripError(this.message);
|
|
|
|
@override
|
|
List<Object?> get props => [message];
|
|
} |