orders_tab.dart 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import 'package:ristoris/core/utils.dart';
  4. import 'package:ristoris/providers/database_provider.dart';
  5. import 'package:go_router/go_router.dart';
  6. class OrdersTab extends ConsumerWidget {
  7. final int idCliente;
  8. final ThemeData theme;
  9. const OrdersTab({required this.idCliente, required this.theme});
  10. @override
  11. Widget build(BuildContext context, WidgetRef ref) {
  12. final ordiniDao = ref.read(ordiniDaoProvider);
  13. return Scaffold(
  14. body: SafeArea(
  15. child: FutureBuilder(
  16. future: ordiniDao.customerOrdersWidthData(idCliente, false),
  17. builder: (_, snap) {
  18. if (!snap.hasData) {
  19. return const Center(child: CircularProgressIndicator());
  20. }
  21. final orders = snap.data!;
  22. if (orders.isEmpty) return const Center(child: Text('Nessun ordine'));
  23. return ListView.builder(
  24. itemCount: orders.length,
  25. itemBuilder: (_, i) => ListTile(
  26. title: Text('Ordine #${orders[i].numeroOrdine ?? ""}'),
  27. subtitle: Text(Utils.formatDate(orders[i].dataOrdine) ?? ''),
  28. onTap: () => context.push('/dashboard/orders/${orders[i].idOrdine}'),
  29. ),
  30. );
  31. },
  32. ),
  33. ),
  34. floatingActionButton: FloatingActionButton(
  35. heroTag: 'addOrder',
  36. child: const Icon(Icons.add),
  37. onPressed: () => context.push('/dashboard/orders/new?cliente=$idCliente'),
  38. ),
  39. );
  40. }
  41. }