import 'package:didvan/models/requests/radar.dart'; import 'package:didvan/pages/home/radar/radar_details/radar_details_state.dart'; import 'package:didvan/widgets/didvan/page_view.dart'; import 'package:didvan/widgets/floating_navigation_bar.dart'; import 'package:didvan/widgets/state_handlers/state_handler.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class RadarDetails extends StatefulWidget { final Map pageData; const RadarDetails({Key? key, required this.pageData}) : super(key: key); @override State createState() => _RadarDetailsState(); } class _RadarDetailsState extends State { final ScrollController _scrollController = ScrollController(); @override void initState() { final state = context.read(); state.args = widget.pageData['args'] ?? const RadarRequestArgs(page: 0); Future.delayed(Duration.zero, () { state.getRadarDetails(widget.pageData['id']); }); super.initState(); } @override Widget build(BuildContext context) { return Scaffold( body: Consumer( builder: (context, state, child) => StateHandler( onRetry: () => state.getRadarDetails(state.currentRadar.id), state: state, builder: (context, state) => Stack( children: [ if (state.radars.isNotEmpty) DidvanPageView( isRadar: true, initialIndex: state.initialIndex, onPageChanged: _onPageChanged, scrollController: _scrollController, items: state.radars, ), if (state.radars.isNotEmpty) Positioned( bottom: 0, left: 0, right: 0, child: FloatingNavigationBar( comments: state.currentRadar.comments, id: state.currentRadar.id, isRadar: true, marked: state.currentRadar.marked, title: state.currentRadar.title, onMarkChanged: (value) => widget.pageData['onMarkChanged']( state.currentRadar.id, value, ), categories: state.currentRadar.categories, scrollController: _scrollController, onCommentsChanged: (count) { state.onCommentsChanged(count); widget.pageData['onCommentsChanged']( state.currentRadar.id, count, ); }, ), ), ], ), ), ), ); } void _onPageChanged(int index) { final state = context.read(); state.getRadarDetails( state.radars[index]!.id, isForward: state.currentIndex < index, ); } }