i have a single screen with multiple table and charts that show diffrent data from 15 API i created one state and 15 status files to manage each api state but it become very complicated i want to know what is best practice to manage status of 15 API with one state
sample code for my state file
import 'package:codes/features/ticket_list/presentation/cubit/ticket_list_status.dart';
import 'filter_status.dart';
class TicketListState {
AllTicketListStatus? allTicketListStatus;
TicketListAssignedToMeStatus? ticketListAssignedToMeStatus;
TicketListUnassignedStatus? ticketListUnassignedStatus;
FilterStatus? filterStatus;
TicketListState({
this.allTicketListStatus,
this.ticketListAssignedToMeStatus,
this.ticketListUnassignedStatus,
this.filterStatus,
});
TicketListState copyWith({
TicketListStatus? newTicketListStatus,
TicketListAssignedToMeStatus? newTicketListAssignedToMeStatus,
TicketListUnassignedStatus? newTicketListUnassignedStatus,
FilterStatus? newFilterStatus,
}) {
return TicketListState(
ticketListStatus: newTicketListStatus ?? this.ticketListStatus,
ticketListAssignedToMeStatus: newTicketListAssignedToMeStatus ?? this.ticketListAssignedToMeStatus,
ticketListUnassignedStatus: newTicketListUnassignedStatus ?? this.ticketListUnassignedStatus,
filterStatus: newFilterStatus ?? this.filterStatus,
);
}
}
sample one of api status:
import 'package:equatable/equatable.dart';
import '../../data/models/ticket_list_model.dart';
abstract class AllTicketListStatus extends Equatable {
const TicketListStatus();
@override
List<Object> get props => [];
}
///all tickets status
class AllTicketListInitial extends AllTicketListStatus {}
class AllTicketListLoading extends AllTicketListStatus {}
class AllTicketListSuccess extends AllTicketListStatus {
final List<TicketListModel> ticketList;
AllTicketListSuccess({required this.ticketList});
}
class TicketListFailure extends AllTicketListStatus {
final String message;
TicketListFailure({required this.message});
@override
List<Object> get props => [message];
}
sample cubit file with only 4 input :
class TicketListCubit extends Cubit<TicketListState> {
final TicketListRepository ticketRepository;
TicketListCubit(this.ticketRepository) : super(TicketListState(ticketListStatus: AllTicketListInitial(), filterStatus: FilterStatus(), ticketListAssignedToMeStatus: TicketListAssignedToMeInitial(), ticketListUnassignedStatus: TicketListUnassignedInitial()));