import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../modeller/job.dart'; import '../../servisler/job_orkestratoru.dart'; class RenderSayfasi extends ConsumerWidget { const RenderSayfasi({super.key}); Color _renk(JobDurum d) => switch (d) { JobDurum.tamam => Colors.green, JobDurum.calisiyor => Colors.amber, JobDurum.kuyruk => Colors.blue, JobDurum.hata => Colors.red, JobDurum.iptal => Colors.grey, JobDurum.durakli => Colors.orange, }; @override Widget build(BuildContext context, WidgetRef ref) { final joblar = ref.watch(joblarProvider); return Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('Render Kuyruğu', style: Theme.of(context).textTheme.headlineSmall), const SizedBox(height: 12), Expanded( child: joblar.when( data: (liste) { if (liste.isEmpty) { return const Center(child: Text('Şu anda iş yok.')); } return ListView.builder( itemCount: liste.length, itemBuilder: (ctx, i) { final j = liste[i]; return Card( child: ListTile( leading: Container( width: 8, height: 60, color: _renk(j.durum), ), title: Row( children: [ Text(j.tip.name, style: Theme.of(context).textTheme.titleSmall), const SizedBox(width: 8), Chip( label: Text(j.durum.name, style: const TextStyle(fontSize: 10)), padding: EdgeInsets.zero, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), ], ), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(j.fazAciklama, style: const TextStyle(fontSize: 11)), if (j.durum == JobDurum.calisiyor) LinearProgressIndicator( value: j.ilerleme / 100, minHeight: 3, ), if (j.hata != null) Text( 'Hata: ${j.hata}', style: const TextStyle(color: Colors.red, fontSize: 11), ), ], ), trailing: Row( mainAxisSize: MainAxisSize.min, children: [ Text('${j.ilerleme.toStringAsFixed(0)}%'), if (j.durum == JobDurum.calisiyor || j.durum == JobDurum.kuyruk) IconButton( icon: const Icon(Icons.cancel_outlined), onPressed: () => JobOrkestratoru.ornek.iptal(j.id), ), ], ), ), ); }, ); }, loading: () => const Center(child: CircularProgressIndicator()), error: (e, _) => Text('Hata: $e'), ), ), ], ), ); } }