import 'package:fast_network_navigation/modules/trips_overview.dart'; import 'package:fast_network_navigation/pages/new_trip.dart'; import 'package:fast_network_navigation/pages/tutorial.dart'; import 'package:fast_network_navigation/structs/trip.dart'; import 'package:flutter/material.dart'; import 'package:fast_network_navigation/pages/overview.dart'; import 'package:fast_network_navigation/pages/profile.dart'; // BasePage is the scaffold that holds all other pages // A side drawer is used to switch between pages class BasePage extends StatefulWidget { final String mainScreen; final String currentMap; final List trips; const BasePage({super.key, required this.mainScreen, this.currentMap = "map", this.trips = const []}); @override State createState() => _BasePageState(); } class _BasePageState extends State { @override Widget build(BuildContext context) { Widget currentView = const Text("loading..."); if (widget.mainScreen == "map") { currentView = NavigationOverview(); } else if (widget.mainScreen == "tutorial") { currentView = TutorialPage(); } else if (widget.mainScreen == "profile") { currentView = ProfilePage(); } final ThemeData theme = Theme.of(context); return Scaffold( appBar: AppBar(title: Text("City Nav")), body: Center(child: currentView), drawer: Drawer( // Add a ListView to the drawer. This ensures the user can scroll // through the options in the drawer if there isn't enough vertical // space to fit everything. child: Column( children: [ DrawerHeader( decoration: BoxDecoration( gradient: LinearGradient(colors: [Colors.cyan, theme.primaryColor]) ), child: Center( child: Text( 'City Nav', style: TextStyle( color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold, ), ), ), ), ListTile( title: const Text('Start'), leading: const Icon(Icons.map), selected: widget.mainScreen == "map", onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) => BasePage(mainScreen: "map") ) ); }, ), ListTile( title: const Text('Trip Overview'), leading: const Icon(Icons.list), trailing: ElevatedButton( onPressed: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) => const NewTripPage() ) ); }, child: const Text('New'), ), ), Expanded(child: TripsOverview()), const Divider(), ListTile( title: const Text('How to use'), leading: Icon(Icons.help), selected: widget.mainScreen == "tutorial", onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) => BasePage(mainScreen: "tutorial") ) ); }, ), ListTile( title: const Text('Settings'), leading: const Icon(Icons.settings), selected: widget.mainScreen == "profile", onTap: () { Navigator.of(context).push( MaterialPageRoute( builder: (context) => BasePage(mainScreen: "profile") ) ); }, ), // settings in the bottom of the drawer ], ), ), ); } }