customer_detail_page.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_riverpod/flutter_riverpod.dart';
  3. import 'package:go_router/go_router.dart';
  4. import 'package:intl/intl.dart';
  5. import 'package:ristoris/ui/pages/customers/tabs/destinations_tab.dart';
  6. import 'package:ristoris/ui/pages/customers/tabs/info_tab.dart';
  7. import 'package:ristoris/ui/pages/customers/tabs/orders_tab.dart';
  8. import 'package:ristoris/ui/pages/customers/tabs/payments_tab.dart';
  9. import '../../../database/database.dart';
  10. import '../../../providers/auth_provider.dart';
  11. import '../../../providers/database_provider.dart';
  12. import '../../../providers/customer_provider.dart';
  13. import '../../../database/tables/clienti.dart';
  14. import '../../../database/tables/filiali.dart';
  15. import '../../../database/tables/scadenze.dart';
  16. import '../../../core/responsive.dart';
  17. class CustomerDetailPage extends ConsumerWidget {
  18. final int id;
  19. const CustomerDetailPage({super.key, required this.id});
  20. @override
  21. Widget build(BuildContext context, WidgetRef ref) {
  22. final clientiDao = ref.read(clientiDaoProvider);
  23. final clienteAsync = clientiDao.getById(id);
  24. final theme = Theme.of(context);
  25. return DefaultTabController(
  26. length: 4,
  27. child: Scaffold(
  28. appBar: AppBar(
  29. title: FutureBuilder<Cliente?>(
  30. future: clienteAsync,
  31. builder: (_, snap) => Text(snap.data?.ragioneSociale ?? 'Cliente'),
  32. ),
  33. bottom: const TabBar(
  34. tabs: [
  35. Tab(text: 'Info', icon: Icon(Icons.info_outline)),
  36. Tab(text: 'Ordini', icon: Icon(Icons.receipt_long_outlined)),
  37. Tab(text: 'Destinazioni', icon: Icon(Icons.location_on_outlined)),
  38. Tab(
  39. text: 'Scadenze',
  40. icon: Icon(Icons.account_balance_wallet_outlined),
  41. ),
  42. ],
  43. ),
  44. ),
  45. body: SafeArea(
  46. child: FutureBuilder<Cliente?>(
  47. future: clienteAsync,
  48. builder: (_, snap) {
  49. final cliente = snap.data;
  50. if (cliente == null) {
  51. return const Center(child: CircularProgressIndicator());
  52. }
  53. return TabBarView(
  54. children: [
  55. InfoTab(cliente: cliente, theme: theme),
  56. OrdersTab(idCliente: id, theme: theme),
  57. DestinationsTab(idCliente: id, theme: theme),
  58. PaymentsTab(
  59. idCliente: id ?? 0,
  60. theme: theme,
  61. ),
  62. ],
  63. );
  64. },
  65. ),
  66. ),
  67. ),
  68. );
  69. }
  70. }