import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../../core/theme/app_colors.dart'; import '../../../../core/widgets/riotz_scaffold.dart'; import '../../../music/presentation/widgets/track_card.dart'; import '../providers/discover_providers.dart'; class DiscoverScreen extends ConsumerStatefulWidget { const DiscoverScreen({super.key}); @override ConsumerState createState() => _DiscoverScreenState(); } class _DiscoverScreenState extends ConsumerState { final _searchController = TextEditingController(); String _query = ''; @override void dispose() { _searchController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final theme = Theme.of(context); final discoverAsync = ref.watch(discoverDataProvider); return RiotzScaffold( appBar: AppBar(title: const Text('RIOTZ // DISCOVER')), body: RefreshIndicator( color: AppColors.neonRed, backgroundColor: AppColors.black, onRefresh: () async => ref.invalidate(discoverDataProvider), child: ListView( padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 24), children: [ TextField( controller: _searchController, decoration: const InputDecoration( prefixIcon: Icon(Icons.search, color: AppColors.white), hintText: 'SEARCH THE VOID...', ), onChanged: (value) => setState(() => _query = value.trim()), ), const SizedBox(height: 32), discoverAsync.when( loading: () => const Center(child: Padding(padding: EdgeInsets.all(48), child: CircularProgressIndicator(color: AppColors.neonRed))), error: (error, _) => Center(child: Text('DISCOVERY OFFLINE: $error')), data: (data) => _buildDiscoveryContent(theme, data), ), ], ), ), ); } Widget _buildDiscoveryContent(ThemeData theme, data) { // Logic previously implemented in discover_page.dart, now polished for discover_screen.dart return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ _SectionHeader(title: 'TRENDING AGENTS', count: data.trendingUsers.length), const SizedBox(height: 40), _SectionHeader(title: 'SONIC FREQUENCIES', count: data.trendingTracks.length), const SizedBox(height: 16), ...data.trendingTracks.take(5).map((track) => TrackCard(track: track)), ], ); } } class _SectionHeader extends StatelessWidget { const _SectionHeader({required this.title, required this.count}); final String title; final int count; @override Widget build(BuildContext context) { final theme = Theme.of(context); return Row( children: [ Text(title, style: theme.textTheme.labelLarge?.copyWith(letterSpacing: 2)), const Spacer(), Text('[$count]', style: theme.textTheme.labelLarge?.copyWith(color: AppColors.neonRed)), ], ); } }