k
This commit is contained in:
@@ -103,32 +103,26 @@ class TicketList extends StatelessWidget {
|
||||
FilledButton.icon(
|
||||
onPressed: () async {
|
||||
// 1. Apriamo la modale e ASPETTIAMO il risultato (tipizzandolo come Record)
|
||||
final Uint8List? result =
|
||||
await showModalBottomSheet<Uint8List>(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
builder: (context) {
|
||||
return BlocProvider(
|
||||
create: (context) => TicketShippingCubit(
|
||||
tickets: state.selectedTickets.toList(),
|
||||
)..loadRepairCenters(),
|
||||
child: TicketShippingModal(
|
||||
ticketIds: state.selectedTickets
|
||||
.map((t) => t.id!)
|
||||
.toList(),
|
||||
),
|
||||
);
|
||||
},
|
||||
final bool? result = await showModalBottomSheet<bool?>(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
builder: (context) {
|
||||
return BlocProvider(
|
||||
create: (context) => TicketShippingCubit(
|
||||
tickets: state.selectedTickets.toList(),
|
||||
)..loadRepairCenters(),
|
||||
child: TicketShippingModal(
|
||||
ticketIds: state.selectedTickets
|
||||
.map((t) => t.id!)
|
||||
.toList(),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
// 2. Se l'utente ha chiuso trascinando giù, result è null.
|
||||
// Se ha salvato con successo, result contiene il nostro Record!
|
||||
if (result != null && context.mounted) {
|
||||
await Printing.layoutPdf(
|
||||
onLayout: (format) async => result,
|
||||
name:
|
||||
'DDT_${DateTime.now().millisecondsSinceEpoch}.pdf',
|
||||
);
|
||||
// 5. Pulizia finale: Deselezioniamo tutti i ticket e ricarichiamo la lista
|
||||
context.read<TicketListCubit>().clearSelection();
|
||||
// (Se necessario, chiama il metodo per ricaricare la lista dei ticket dal DB)
|
||||
|
||||
@@ -110,6 +110,24 @@ class TicketListCard extends StatelessWidget {
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
),
|
||||
if (ticket.shippingDocument != null) ...[
|
||||
Row(
|
||||
children: [
|
||||
const Text('DDT'),
|
||||
const SizedBox(width: 4),
|
||||
InkWell(
|
||||
borderRadius: BorderRadius.circular(20),
|
||||
onTap: () {},
|
||||
child: const Icon(
|
||||
Icons.picture_as_pdf,
|
||||
color: Colors.redAccent,
|
||||
size: 20,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
|
||||
// IL BADGE DELLO STATO
|
||||
Container(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
@@ -123,6 +141,7 @@ class TicketListCard extends StatelessWidget {
|
||||
color: statusColor.withValues(alpha: 0.5),
|
||||
),
|
||||
),
|
||||
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
|
||||
@@ -39,21 +39,7 @@ class _TicketShippingModalState extends State<TicketShippingModal> {
|
||||
child: BlocConsumer<TicketShippingCubit, TicketShippingState>(
|
||||
listener: (context, state) {
|
||||
if (state.status == TicketShippingStatus.success) {
|
||||
final provider = state.availableProviders.firstWhere(
|
||||
(p) => p.id == state.document.providerId,
|
||||
);
|
||||
final location = state.availableLocations.firstWhere(
|
||||
(l) => l.id == state.document.destinationLocationId,
|
||||
);
|
||||
|
||||
// Creiamo un Dart Record elegante e lo "spariamo" fuori
|
||||
final ddtData = (
|
||||
document: state.document,
|
||||
provider: provider,
|
||||
location: location,
|
||||
);
|
||||
|
||||
Navigator.pop(context, ddtData);
|
||||
Navigator.pop(context, true);
|
||||
}
|
||||
if (state.status == TicketShippingStatus.failure &&
|
||||
state.errorMessage != null) {
|
||||
|
||||
Reference in New Issue
Block a user