import 'package:flutter/material.dart'; import 'package:monitor2/log/class_sitelog.dart'; class LogsPage extends StatefulWidget { final List logs; const LogsPage({super.key, required this.logs}); @override State createState() => _LogsPageState(); } class _LogsPageState extends State { String sortBy = 'date'; @override Widget build(BuildContext context) { final logs = List.of(widget.logs); if (sortBy == 'date') { logs.sort((a, b) => b.date.compareTo(a.date)); } else { logs.sort((a, b) => a.statusCode.compareTo(b.statusCode)); } return Scaffold( appBar: AppBar( title: Text('📝 Logs'), actions: [ PopupMenuButton( onSelected: (value) => setState(() => sortBy = value), itemBuilder: (context) => [ PopupMenuItem(value: 'date', child: Text('Trier par date')), PopupMenuItem(value: 'status', child: Text('Trier par statut')), ], ), ], ), body: ListView.builder( itemCount: logs.length, itemBuilder: (context, index) { final log = logs[index]; final isOk = log.statusCode == 200; return ListTile( leading: Text(isOk ? '🟢' : '🔴', style: TextStyle(fontSize: 20)), title: Text(log.url), subtitle: Text( '${log.date.toLocal()} - ' '${isOk ? 'OK' : 'Erreur: ${log.statusCode == -1 ? 'Timeout/Network' : log.statusCode}'}', ), tileColor: isOk ? null : Colors.red.withAlpha(10), ); }, ), ); } }