import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/order_provider.dart'; import 'order_detail_screen.dart'; import 'order_shipment_screen.dart'; import 'order_invoice_screen.dart'; import 'order_track_screen.dart'; class OrdersScreen extends StatefulWidget { const OrdersScreen({super.key}); @override State createState() => _OrdersScreenState(); } class _OrdersScreenState extends State { @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { Provider.of(context, listen: false).loadOrders(); }); } @override Widget build(BuildContext context) { final provider = Provider.of(context); if (provider.loading) { return const Center(child: CircularProgressIndicator()); } return ListView.builder( padding: const EdgeInsets.all(16), itemCount: provider.orders.length, itemBuilder: (_, i) { final o = provider.orders[i]; return Card( elevation: 2, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), child: Padding( padding: const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("Order ID: ${o['order_id']}", style: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold)), const SizedBox(height: 4), Text(o['description']), Text("₹ ${o['amount']}"), Text(o['status'], style: const TextStyle(color: Colors.indigo)), const SizedBox(height: 10), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ _btn("Order", () => _openOrderDetails(o['order_id'])), _btn("Shipment", () => _openShipment(o['order_id'])), _btn("Invoice", () => _openInvoice(o['order_id'])), _btn("Track", () => _openTrack(o['order_id'])), ], ) ], ), ), ); }, ); } Widget _btn(String text, VoidCallback onTap) { return InkWell( onTap: onTap, child: Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( borderRadius: BorderRadius.circular(6), color: Colors.indigo.shade50, ), child: Text(text, style: const TextStyle(color: Colors.indigo)), ), ); } void _openOrderDetails(String id) { Navigator.push(context, MaterialPageRoute( builder: (_) => OrderDetailScreen(orderId: id))); } void _openShipment(String id) { Navigator.push(context, MaterialPageRoute( builder: (_) => OrderShipmentScreen(orderId: id))); } void _openInvoice(String id) { Navigator.push(context, MaterialPageRoute( builder: (_) => OrderInvoiceScreen(orderId: id))); } void _openTrack(String id) { Navigator.push(context, MaterialPageRoute( builder: (_) => OrderTrackScreen(orderId: id))); } }