what is best solution to manage 15 different api and status files with one state for a single screen on flutter bloc package?

28 views Asked by At

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()));

0

There are 0 answers