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

60 lines
1.5 KiB
Dart
Raw 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;
// Filtri attivi
final String? searchTerm;
final DateTimeRange? dateRange;
final TicketStatus? statusFilter;
const TicketListState({
this.tickets = const [],
this.isLoading = false,
this.hasReachedMax = false,
this.errorMessage = '',
this.searchTerm,
this.dateRange,
this.statusFilter,
});
TicketListState copyWith({
List<TicketModel>? tickets,
bool? isLoading,
bool? hasReachedMax,
String? errorMessage,
String? searchTerm,
DateTimeRange? dateRange,
TicketStatus? statusFilter,
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),
);
}
@override
List<Object?> get props => [
tickets,
isLoading,
hasReachedMax,
errorMessage,
searchTerm,
dateRange,
statusFilter,
];
}