import 'package:flutter/material.dart'; import '../../data/models/balance.dart'; class SettlementsTab extends StatelessWidget { final List settlements; const SettlementsTab({ super.key, required this.settlements, }); @override Widget build(BuildContext context) { if (settlements.isEmpty) { return const Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.check_circle, size: 80, color: Colors.green), SizedBox(height: 16), Text( 'Tout est réglé !', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), SizedBox(height: 8), Text( 'Aucun remboursement nécessaire', style: TextStyle(fontSize: 14, color: Colors.grey), ), ], ), ); } return Column( children: [ Container( padding: const EdgeInsets.all(16), color: Colors.blue.withValues(alpha: 0.1), child: Row( children: [ const Icon(Icons.info_outline, color: Colors.blue), const SizedBox(width: 12), Expanded( child: Text( 'Plan de remboursement optimisé (${settlements.length} transaction${settlements.length > 1 ? 's' : ''})', style: const TextStyle( fontSize: 14, fontWeight: FontWeight.w500, ), ), ), ], ), ), Expanded( child: ListView.builder( padding: const EdgeInsets.all(16), itemCount: settlements.length, itemBuilder: (context, index) { final settlement = settlements[index]; return _buildSettlementCard(context, settlement, index + 1); }, ), ), ], ); } Widget _buildSettlementCard(BuildContext context, Settlement settlement, int number) { final isDark = Theme.of(context).brightness == Brightness.dark; return Card( margin: const EdgeInsets.only(bottom: 12), child: Padding( padding: const EdgeInsets.all(16), child: Row( children: [ Container( width: 32, height: 32, decoration: BoxDecoration( color: isDark ? Colors.blue[900] : Colors.blue[100], shape: BoxShape.circle, ), child: Center( child: Text( '$number', style: const TextStyle( fontWeight: FontWeight.bold, color: Colors.blue, ), ), ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( settlement.fromUserName, style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 4), Text( 'doit payer', style: TextStyle( fontSize: 12, color: isDark ? Colors.grey[400] : Colors.grey[600], ), ), ], ), ), Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( color: Colors.green.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(8), border: Border.all(color: Colors.green), ), child: Text( '${settlement.amount.toStringAsFixed(2)} €', style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold, color: Colors.green, ), ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ Text( settlement.toUserName, style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, ), textAlign: TextAlign.right, ), const SizedBox(height: 4), Text( 'à recevoir', style: TextStyle( fontSize: 12, color: isDark ? Colors.grey[400] : Colors.grey[600], ), ), ], ), ), ], ), ), ); } }