order_actions.dart 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import 'package:flutter/material.dart';
  2. import 'package:ristoris/core/constants.dart';
  3. import 'package:ristoris/database/database.dart';
  4. class OrderActions extends StatelessWidget {
  5. final VOrdiniData order;
  6. final VoidCallback onEdit;
  7. final VoidCallback onDelete;
  8. const OrderActions({
  9. super.key,
  10. required this.order,
  11. required this.onEdit,
  12. required this.onDelete,
  13. });
  14. @override
  15. Widget build(BuildContext context) {
  16. final cs = Theme.of(context).colorScheme;
  17. if (order.stato == AppConstants.kStatusNew) {
  18. return Row(
  19. mainAxisSize: MainAxisSize.min,
  20. children: [
  21. IconButton(
  22. icon: const Icon(Icons.edit, size: 20),
  23. onPressed: onEdit,
  24. visualDensity: VisualDensity.compact,
  25. ),
  26. IconButton(
  27. icon: Icon(Icons.delete_outline, size: 20, color: cs.error),
  28. onPressed: () => _confirmDelete(context),
  29. visualDensity: VisualDensity.compact,
  30. ),
  31. ],
  32. );
  33. }
  34. return Row(
  35. mainAxisSize: MainAxisSize.min,
  36. children: [
  37. IconButton(
  38. icon: Icon(Icons.visibility, size: 20, color: cs.secondary),
  39. onPressed: onEdit,
  40. visualDensity: VisualDensity.compact,
  41. ),
  42. ],
  43. );
  44. }
  45. Future<void> _confirmDelete(BuildContext context) async {
  46. final confirmed = await showDialog<bool>(
  47. context: context,
  48. builder: (ctx) => AlertDialog(
  49. title: const Text('Elimina ordine'),
  50. content: Text(
  51. 'Vuoi eliminare l\'ordine n. ${order.numeroOrdine ?? order.idOrdine}?',
  52. ),
  53. actions: [
  54. TextButton(
  55. onPressed: () => Navigator.pop(ctx, false),
  56. child: const Text('Annulla'),
  57. ),
  58. FilledButton(
  59. onPressed: () => Navigator.pop(ctx, true),
  60. child: const Text('Elimina'),
  61. ),
  62. ],
  63. ),
  64. );
  65. if (confirmed == true && context.mounted) {
  66. onDelete();
  67. }
  68. }
  69. }