import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../../app/theme/app_colors.dart'; import '../../../data/services/equran_service.dart'; class ToolsScreen extends ConsumerWidget { const ToolsScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final isDark = Theme.of(context).brightness == Brightness.dark; return Scaffold( appBar: AppBar( title: const Text('Alat Islami'), centerTitle: false, actions: [ IconButton( onPressed: () {}, icon: const Icon(Icons.notifications_outlined), ), IconButton( onPressed: () => context.push('/settings'), icon: const Icon(Icons.settings_outlined), ), const SizedBox(width: 8), ], ), body: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'AKSES CEPAT', style: TextStyle( fontSize: 11, fontWeight: FontWeight.w700, letterSpacing: 1.5, color: AppColors.sage, ), ), const SizedBox(height: 12), Row( children: [ Expanded( child: _ToolCard( icon: Icons.explore, title: 'Arah\nKiblat', color: AppColors.primary, isDark: isDark, onTap: () => context.push('/tools/qibla'), ), ), const SizedBox(width: 12), Expanded( child: _ToolCard( icon: Icons.menu_book, title: 'Baca\nQuran', color: const Color(0xFF4A90D9), isDark: isDark, onTap: () => context.push('/tools/quran'), ), ), ], ), const SizedBox(height: 12), Row( children: [ Expanded( child: _ToolCard( icon: Icons.auto_awesome, title: 'Penghitung\nDzikir', color: const Color(0xFFE8A838), isDark: isDark, onTap: () => context.push('/tools/dzikir'), ), ), const SizedBox(width: 12), Expanded( child: _ToolCard( icon: Icons.headphones, title: 'Quran\nMurattal', color: const Color(0xFF7B61FF), isDark: isDark, onTap: () => context.push('/tools/quran/1/murattal'), ), ), ], ), const SizedBox(height: 32), // Ayat Hari Ini FutureBuilder?>( future: EQuranService.instance.getDailyAyat(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Container( width: double.infinity, padding: const EdgeInsets.all(20), decoration: BoxDecoration( color: isDark ? AppColors.primary.withValues(alpha: 0.08) : const Color(0xFFF5F9F0), borderRadius: BorderRadius.circular(16), ), child: const Center(child: CircularProgressIndicator()), ); } if (!snapshot.hasData || snapshot.data == null) { return const SizedBox.shrink(); // Hide if error/no internet } final data = snapshot.data!; return Container( width: double.infinity, padding: const EdgeInsets.all(20), decoration: BoxDecoration( color: isDark ? AppColors.primary.withValues(alpha: 0.08) : const Color(0xFFF5F9F0), borderRadius: BorderRadius.circular(16), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Ayat Hari Ini', style: TextStyle( fontSize: 13, fontWeight: FontWeight.w600, color: isDark ? AppColors.textSecondaryDark : AppColors.textSecondaryLight, ), ), IconButton( icon: Icon(Icons.share, size: 18, color: isDark ? AppColors.textSecondaryDark : AppColors.textSecondaryLight), onPressed: () {}, ), ], ), const SizedBox(height: 12), Align( alignment: Alignment.centerRight, child: Text( data['teksArab'] ?? '', style: const TextStyle( fontFamily: 'Amiri', fontSize: 24, height: 1.8, ), textAlign: TextAlign.right, ), ), const SizedBox(height: 12), Text( '"${data['teksIndonesia'] ?? ''}"', style: TextStyle( fontSize: 14, fontStyle: FontStyle.italic, height: 1.5, color: isDark ? Colors.white : Colors.black87, ), ), const SizedBox(height: 12), Text( 'QS. ${data['surahName']}: ${data['nomorAyat']}', style: const TextStyle( fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.primary, ), ), ], ), ); }, ), ], ), ), ); } } class _ToolCard extends StatelessWidget { final IconData icon; final String title; final Color color; final bool isDark; final VoidCallback onTap; const _ToolCard({ required this.icon, required this.title, required this.color, required this.isDark, required this.onTap, }); @override Widget build(BuildContext context) { return GestureDetector( onTap: onTap, child: Container( height: 140, padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: isDark ? AppColors.surfaceDark : AppColors.surfaceLight, borderRadius: BorderRadius.circular(20), border: Border.all( color: isDark ? color.withValues(alpha: 0.15) : AppColors.cream, ), boxShadow: [ BoxShadow( color: color.withValues(alpha: 0.08), blurRadius: 12, offset: const Offset(0, 4), ), ], ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 44, height: 44, decoration: BoxDecoration( color: color.withValues(alpha: 0.15), borderRadius: BorderRadius.circular(12), ), child: Icon(icon, color: color, size: 24), ), Text( title, style: const TextStyle( fontSize: 15, fontWeight: FontWeight.w700, height: 1.3, ), ), ], ), ), ); } }