Files
flux/lib/features/tickets/blocs/ticket_list_state.dart

75 lines
2.1 KiB
Dart
Raw Permalink Normal View History

import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:flux/features/tickets/models/ticket_model.dart';
class TicketListState extends Equatable {
final List<TicketModel> tickets;
final bool isLoading;
final bool hasReachedMax;
final String errorMessage;
2026-05-16 11:51:26 +02:00
final Set<TicketModel> selectedTickets;
// Filtri attivi
final String? searchTerm;
final DateTimeRange? dateRange;
final TicketStatus? statusFilter;
final TicketType? ticketTypeFilter;
final String? staffIdFilter;
const TicketListState({
this.tickets = const [],
this.isLoading = false,
this.hasReachedMax = false,
this.errorMessage = '',
2026-05-16 11:51:26 +02:00
this.selectedTickets = const {},
this.searchTerm,
this.dateRange,
this.statusFilter,
this.ticketTypeFilter,
this.staffIdFilter,
});
TicketListState copyWith({
List<TicketModel>? tickets,
bool? isLoading,
bool? hasReachedMax,
String? errorMessage,
2026-05-16 11:51:26 +02:00
Set<TicketModel>? selectedTickets,
String? searchTerm,
DateTimeRange? dateRange,
TicketStatus? statusFilter,
TicketType? ticketTypeFilter,
String? staffIdFilter,
bool clearSearch = false,
bool clearDate = false,
bool clearStatus = false,
}) {
return TicketListState(
tickets: tickets ?? this.tickets,
isLoading: isLoading ?? this.isLoading,
hasReachedMax: hasReachedMax ?? this.hasReachedMax,
errorMessage: errorMessage ?? this.errorMessage,
searchTerm: clearSearch ? null : (searchTerm ?? this.searchTerm),
dateRange: clearDate ? null : (dateRange ?? this.dateRange),
statusFilter: clearStatus ? null : (statusFilter ?? this.statusFilter),
ticketTypeFilter: ticketTypeFilter ?? this.ticketTypeFilter,
staffIdFilter: staffIdFilter ?? this.staffIdFilter,
2026-05-16 11:51:26 +02:00
selectedTickets: selectedTickets ?? this.selectedTickets,
);
}
@override
List<Object?> get props => [
tickets,
isLoading,
hasReachedMax,
errorMessage,
2026-05-16 11:51:26 +02:00
selectedTickets,
searchTerm,
dateRange,
statusFilter,
ticketTypeFilter,
staffIdFilter,
];
}