import 'package:flutter/material.dart'; import 'package:em2rp/models/equipment_model.dart'; import 'package:em2rp/utils/colors.dart'; /// Widget pour afficher l'en-tête (titre et infos principales) class EquipmentHeaderSection extends StatelessWidget { final EquipmentModel equipment; const EquipmentHeaderSection({ super.key, required this.equipment, }); @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.all(20), decoration: BoxDecoration( gradient: LinearGradient( colors: [AppColors.rouge, AppColors.rouge.withValues(alpha: 0.8)], begin: Alignment.topLeft, end: Alignment.bottomRight, ), borderRadius: BorderRadius.circular(12), boxShadow: [ BoxShadow( color: AppColors.rouge.withValues(alpha: 0.3), blurRadius: 10, offset: const Offset(0, 4), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ CircleAvatar( backgroundColor: Colors.white, radius: 30, child: equipment.category.getIcon( size: 32, color: AppColors.rouge, ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( equipment.id, style: const TextStyle( fontSize: 24, fontWeight: FontWeight.bold, color: Colors.white, ), ), const SizedBox(height: 4), Text( '${equipment.brand ?? ''} ${equipment.model ?? ''}'.trim().isNotEmpty ? '${equipment.brand ?? ''} ${equipment.model ?? ''}'.trim() : 'Marque/Modèle non défini', style: const TextStyle( fontSize: 16, color: Colors.white70, ), ), ], ), ), if (equipment.category != EquipmentCategory.consumable && equipment.category != EquipmentCategory.cable) _buildStatusBadge(), ], ), ], ), ); } Widget _buildStatusBadge() { final status = equipment.status; return Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20), ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Container( width: 8, height: 8, decoration: BoxDecoration( color: status.color, shape: BoxShape.circle, ), ), const SizedBox(width: 8), Text( status.label, style: TextStyle( fontSize: 14, fontWeight: FontWeight.bold, color: status.color, ), ), ], ), ); } }