import 'package:flutter/material.dart'; import '../providers/mqtt_provider.dart'; class HistoryList extends StatelessWidget { final MQTTProvider provider; const HistoryList({super.key, required this.provider}); @override Widget build(BuildContext context) { if (provider.history.isEmpty) { return const Card( child: Padding( padding: EdgeInsets.all(24), child: Center( child: Text('Belum ada riwayat aktivitas', style: TextStyle(color: Colors.grey))), ), ); } return Card( child: ListView.separated( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemCount: provider.history.length > 20 ? 20 : provider.history.length, separatorBuilder: (context, index) => const Divider(height: 1), itemBuilder: (context, index) { final item = provider.history[index]; return ListTile( leading: _buildIcon(item['type'], item['value']), title: Text(item['value'], style: const TextStyle(fontSize: 13)), subtitle: Text( '${_formatTime(item['time'])} • ${item['mode'] == 'manual' ? 'Manual' : 'Otomatis'}', style: const TextStyle(fontSize: 11), ), ); }, ), ); } Widget _buildIcon(String type, String value) { IconData icon; Color color; if (value.contains('Orang terdeteksi')) { icon = Icons.people; color = Colors.green; } else if (value.contains('Ruangan kosong')) { icon = Icons.people_outline; color = Colors.grey; } else if (value.contains('Menyala')) { icon = Icons.power; color = Colors.green; } else if (value.contains('Mati')) { icon = Icons.power_off; color = Colors.red; } else if (value.contains('Suhu')) { icon = Icons.thermostat; color = Colors.orange; } else if (value.contains('Mode')) { icon = Icons.settings; color = Colors.blue; } else if (value.contains('timer') || value.contains('delay')) { icon = Icons.timer; color = Colors.orange; } else if (value.contains('Timer delay')) { icon = Icons.timer_off; color = Colors.red; } else { icon = Icons.info; color = Colors.grey; } return CircleAvatar( radius: 16, backgroundColor: color.withOpacity(0.2), child: Icon(icon, size: 16, color: color)); } String _formatTime(DateTime time) { return '${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}:${time.second.toString().padLeft(2, '0')}'; } }