import 'package:flutter/material.dart'; import '../models/history_item.dart'; import '../services/history_service.dart'; class HistoryScreen extends StatefulWidget { const HistoryScreen({super.key}); @override State createState() => _HistoryScreenState(); } class _HistoryScreenState extends State { final _historyService = HistoryService(); List _items = []; bool _loading = true; @override void initState() { super.initState(); _load(); } Future _load() async { final items = await _historyService.getAll(); if (!mounted) return; setState(() { _items = items; _loading = false; }); } Future _clear() async { final confirmed = await showDialog( context: context, builder: (ctx) => AlertDialog( title: const Text('Geçmişi Sil'), content: const Text('Tüm çeviri geçmişi silinsin mi? Bu işlem geri alınamaz.'), actions: [ TextButton(onPressed: () => Navigator.pop(ctx, false), child: const Text('Vazgeç')), FilledButton(onPressed: () => Navigator.pop(ctx, true), child: const Text('Sil')), ], ), ); if (confirmed == true) { await _historyService.clear(); _load(); } } String _formatTime(DateTime dt) { final now = DateTime.now(); final sameDay = dt.year == now.year && dt.month == now.month && dt.day == now.day; final time = '${dt.hour.toString().padLeft(2, '0')}:${dt.minute.toString().padLeft(2, '0')}'; if (sameDay) return time; return '${dt.day}.${dt.month}.${dt.year} $time'; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Geçmiş'), actions: [ if (_items.isNotEmpty) IconButton( icon: const Icon(Icons.delete_outline), tooltip: 'Geçmişi temizle', onPressed: _clear, ), ], ), body: _loading ? const Center(child: CircularProgressIndicator()) : _items.isEmpty ? const Center(child: Text('Henüz çeviri geçmişi yok')) : ListView.separated( padding: const EdgeInsets.all(12), itemCount: _items.length, separatorBuilder: (_, __) => const SizedBox(height: 8), itemBuilder: (ctx, i) { final item = _items[i]; return Card( margin: EdgeInsets.zero, child: Padding( padding: const EdgeInsets.all(12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Text( '${item.sourceLang.toUpperCase()} → ${item.targetLang.toUpperCase()}', style: Theme.of(context).textTheme.labelMedium, ), const Spacer(), Text( _formatTime(item.timestamp), style: Theme.of(context).textTheme.labelSmall, ), ], ), const SizedBox(height: 6), Text(item.sourceText), const Divider(height: 16), Text( item.translatedText, style: TextStyle(color: Theme.of(context).colorScheme.primary), ), ], ), ), ); }, ), ); } }