diff --git a/lib/features/events/services/events_service.dart b/lib/features/events/services/events_service.dart index d3ccbe6..81d0ddd 100644 --- a/lib/features/events/services/events_service.dart +++ b/lib/features/events/services/events_service.dart @@ -40,7 +40,7 @@ class EventsService { /// Event details Future getEventDetails(int eventId) async { - final res = await _api.post(ApiEndpoints.eventDetails, body: {'event_id': eventId}, requiresAuth: false); + final res = await _api.post(ApiEndpoints.eventDetails, body: {'event_id': eventId}, requiresAuth: true); return EventModel.fromJson(Map.from(res)); } diff --git a/lib/screens/calendar_screen.dart b/lib/screens/calendar_screen.dart index 1c0ee21..054bac1 100644 --- a/lib/screens/calendar_screen.dart +++ b/lib/screens/calendar_screen.dart @@ -503,7 +503,7 @@ class _CalendarScreenState extends State { : (e.startDate != null && e.endDate != null ? '${e.startDate} - ${e.endDate}' : (e.startDate ?? '')); return GestureDetector( - onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id))), + onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id, initialEvent: e))), child: Card( elevation: 6, margin: const EdgeInsets.fromLTRB(20, 10, 20, 10), @@ -563,7 +563,7 @@ class _CalendarScreenState extends State { : (e.startDate ?? '')); return GestureDetector( - onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id))), + onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id, initialEvent: e))), child: Container( margin: const EdgeInsets.fromLTRB(16, 0, 16, 14), decoration: BoxDecoration( diff --git a/lib/screens/home_desktop_screen.dart b/lib/screens/home_desktop_screen.dart index ef0c834..b9c7261 100644 --- a/lib/screens/home_desktop_screen.dart +++ b/lib/screens/home_desktop_screen.dart @@ -55,10 +55,10 @@ class _HomeDesktopScreenState extends State { return const SettingsScreen(); default: return _HomeContent( - onEventTap: (eventId) { + onEventTap: (eventId, event) { Navigator.push( context, - MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: eventId)), + MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: eventId, initialEvent: event)), ); }, ); @@ -70,7 +70,7 @@ class _HomeDesktopScreenState extends State { // Home content — hero, categories, event grid // --------------------------------------------------------------------------- class _HomeContent extends StatefulWidget { - final void Function(int eventId) onEventTap; + final void Function(int eventId, EventModel event) onEventTap; const _HomeContent({required this.onEventTap}); @override @@ -573,7 +573,7 @@ class _HomeContentState extends State<_HomeContent> child: GestureDetector( onTap: () { Navigator.of(ctx).pop(); - widget.onEventTap(event.id); + widget.onEventTap(event.id, event); }, child: Container( padding: const EdgeInsets.symmetric( @@ -753,7 +753,7 @@ class _HomeContentState extends State<_HomeContent> return MouseRegion( cursor: SystemMouseCursors.click, child: GestureDetector( - onTap: () => widget.onEventTap(e.id), + onTap: () => widget.onEventTap(e.id, e), child: Container( decoration: BoxDecoration( color: Colors.white, diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index bde1f22..5585138 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -395,7 +395,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM onTap: () { Navigator.of(context).pop(); if (ev.id != null) { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id, initialEvent: ev))); } }, ); @@ -805,7 +805,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM onTap: () { Navigator.of(context).pop(); if (ev.id != null) { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id, initialEvent: ev))); } }, child: Container( @@ -1303,7 +1303,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM onTap: () { if (event.id != null) { Navigator.push(context, - MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: event.id))); + MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: event.id, initialEvent: event))); } }, child: Padding( @@ -1663,7 +1663,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM return GestureDetector( onTap: () { if (event.id != null) { - Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: event.id))); + Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: event.id, initialEvent: event))); } }, child: Container( @@ -1855,7 +1855,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM return GestureDetector( onTap: () { - if (e.id != null) Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id))); + if (e.id != null) Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id, initialEvent: e))); }, child: Container( margin: const EdgeInsets.symmetric(vertical: 0), @@ -1924,7 +1924,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM return GestureDetector( onTap: () { - if (e.id != null) Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id))); + if (e.id != null) Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id, initialEvent: e))); }, child: SizedBox( width: 220, @@ -2090,7 +2090,7 @@ class _HomeScreenState extends State with SingleTickerProviderStateM return GestureDetector( onTap: () { - if (e.id != null) Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id))); + if (e.id != null) Navigator.push(context, MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: e.id, initialEvent: e))); }, child: Container( margin: const EdgeInsets.only(bottom: 18), diff --git a/lib/screens/learn_more_screen.dart b/lib/screens/learn_more_screen.dart index 2b0d879..a5b4fb0 100644 --- a/lib/screens/learn_more_screen.dart +++ b/lib/screens/learn_more_screen.dart @@ -15,7 +15,8 @@ import '../core/constants.dart'; class LearnMoreScreen extends StatefulWidget { final int eventId; - const LearnMoreScreen({Key? key, required this.eventId}) : super(key: key); + final EventModel? initialEvent; + const LearnMoreScreen({Key? key, required this.eventId, this.initialEvent}) : super(key: key); @override State createState() => _LearnMoreScreenState(); @@ -48,7 +49,13 @@ class _LearnMoreScreenState extends State { void initState() { super.initState(); _pageNotifier = ValueNotifier(0); - _loadEvent(); + if (widget.initialEvent != null) { + _event = widget.initialEvent; + _loading = false; + WidgetsBinding.instance.addPostFrameCallback((_) => _startAutoScroll()); + } else { + _loadEvent(); + } } @override diff --git a/lib/screens/profile_screen.dart b/lib/screens/profile_screen.dart index f7484f8..9161f3e 100644 --- a/lib/screens/profile_screen.dart +++ b/lib/screens/profile_screen.dart @@ -576,7 +576,7 @@ class _ProfileScreenState extends State onTap: () { if (ev.id != null) { Navigator.of(context) - .push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id))); + .push(MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id, initialEvent: ev))); } }, contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), @@ -1388,7 +1388,7 @@ class _ProfileScreenState extends State onTap: () { if (ev.id != null) { Navigator.of(context).push( - MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id)), + MaterialPageRoute(builder: (_) => LearnMoreScreen(eventId: ev.id, initialEvent: ev)), ); } },