import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../labels.dart'; import '../models/models.dart'; import '../services/auth_controller.dart'; import '../theme/app_theme.dart'; import '../ui/feedback.dart'; import 'stock_detail_screen.dart'; import 'stock_form_screen.dart'; class DealerStockScreen extends StatefulWidget { const DealerStockScreen({super.key, required this.dealer, required this.dealers}); final Dealer dealer; final List dealers; @override State createState() => _DealerStockScreenState(); } class _DealerStockScreenState extends State { List? _stocks; bool _loading = true; @override void initState() { super.initState(); _load(); } Future _load() async { try { final stocks = await context.read().api.stocks(dealerId: widget.dealer.id); if (!mounted) return; setState(() { _stocks = stocks; _loading = false; }); } catch (error) { if (!mounted) return; setState(() => _loading = false); showError(context, error); } } @override Widget build(BuildContext context) { final role = context.watch().user?.role; final stocks = _stocks ?? []; final canAdd = role == 'dealer' || role == 'salesRep' || role == 'superAdmin'; return Scaffold( appBar: AppBar(title: Text(widget.dealer.name)), floatingActionButton: canAdd ? FloatingActionButton.extended( onPressed: () async { final created = await Navigator.of(context).push( MaterialPageRoute( builder: (_) => StockFormScreen(dealers: [widget.dealer]), ), ); if (created == true) _load(); }, icon: const Icon(Icons.add), label: const Text('Add stock'), ) : null, body: _loading && _stocks == null ? const Center(child: CircularProgressIndicator()) : RefreshIndicator( onRefresh: _load, child: ListView( padding: const EdgeInsets.fromLTRB(16, 12, 16, 96), children: [ if (stocks.isEmpty) const Padding( padding: EdgeInsets.symmetric(vertical: 32), child: Center(child: Text('No bikes for this dealer.')), ), for (final stock in stocks) Card( child: ListTile( leading: CircleAvatar( backgroundColor: badgeColor(stock.badge), child: Text( '${stock.ageInDays}', style: const TextStyle(color: Colors.white, fontSize: 12), ), ), title: Text('${modelLabel(stock.model)} · ${stock.color}'), subtitle: Text( '${stock.chassisNumber}${stock.plateNumber == null ? '' : ' · ${stock.plateNumber}'}\n${stageLabel(stock.currentStage)}', ), isThreeLine: true, trailing: Text('${stock.ageInDays}d'), onTap: () async { await Navigator.of(context).push( MaterialPageRoute( builder: (_) => StockDetailScreen(stock: stock, dealers: widget.dealers), ), ); if (mounted) _load(); }, ), ), ], ), ), ); } }