Skip to content

Commit 783c10a

Browse files
change app route
1 parent 027d965 commit 783c10a

File tree

4 files changed

+69
-36
lines changed

4 files changed

+69
-36
lines changed

lib/drawers/main_drawer.dart

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ class _MainDrawerState extends State<MainDrawer> {
9696
leading: const Icon(Icons.route),
9797
title: const Text('Add Route'),
9898
),
99-
ListTile(
100-
onTap: () {
101-
Navigator.pop(context);
102-
Navigator.pushNamed(context, routeNameScheduleListPage);
103-
},
104-
leading: const Icon(Icons.schedule),
105-
title: const Text('Add Schedule'),
106-
),
99+
// ListTile(
100+
// onTap: () {
101+
// Navigator.pop(context);
102+
// Navigator.pushNamed(context, routeNameScheduleListPage);
103+
// },
104+
// leading: const Icon(Icons.schedule),
105+
// title: const Text('Add Schedule'),
106+
// ),
107107
ListTile(
108108
onTap: () {
109109
Navigator.pop(context);

lib/main.dart

Lines changed: 58 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:bus_reservation/pages/add_schedule_page.dart';
22
import 'package:bus_reservation/pages/my_reservation_page.dart';
33
import 'package:bus_reservation/pages/sign_up_page.dart';
44
import 'package:bus_reservation/pages/user_details_page.dart';
5+
import 'package:bus_reservation/utils/helper_functions.dart';
56
import 'package:flutter_easyloading/flutter_easyloading.dart';
67
import 'package:bus_reservation/pages/add_bus_page.dart';
78
import 'package:bus_reservation/pages/add_route_page.dart';
@@ -15,47 +16,76 @@ import 'package:bus_reservation/pages/seat_plan_page.dart';
1516
import 'package:bus_reservation/utils/constants.dart';
1617
import 'package:flutter/material.dart';
1718
import 'package:provider/provider.dart';
18-
1919
import 'pages/add_city.dart';
2020
import 'providers/app_data_provider.dart';
2121

22+
2223
void main() {
2324
runApp(ChangeNotifierProvider(
24-
create: (context) => AppDataProvider(),
25-
child: const MyApp()));
25+
create: (context) => AppDataProvider(),
26+
child: const MyApp(),
27+
));
2628
}
2729

2830
class MyApp extends StatelessWidget {
2931
const MyApp({super.key});
3032

3133
@override
3234
Widget build(BuildContext context) {
33-
return MaterialApp(
34-
debugShowCheckedModeBanner: false,
35-
title: 'Flutter Demo',
36-
builder: EasyLoading.init(),
37-
theme: ThemeData(
38-
primarySwatch: Colors.lightGreen,
39-
brightness: Brightness.dark,
40-
),
41-
initialRoute: routeNameHome,
42-
// initialRoute: routeNameScheduleListPage,
43-
routes: {
44-
routeNameHome : (context) => const SearchPage(),
45-
routeNameSearchResultPage : (context) => const SearchResultPage(),
46-
routeNameSeatPlanPage : (context) => const SeatPlanPage(),
47-
routeNameBookingConfirmationPage : (context) => const BookingConfirmationPage(),
48-
routeNameAddBusPage : (context) => const AddBusPage(),
49-
routeNameAddRoutePage : (context) => const AddRoutePage(),
50-
routeNameScheduleListPage : (context) => const ScheduleListPage(),
51-
routeNameAddSchedulePage : (context) => const AddSchedulePage(),
52-
routeNameReservationPage : (context) => const ReservationPage(),
53-
routeNameLoginPage : (context) => const LoginPage(),
54-
routeNameAddCityPage : (context) => const AddCity(),
55-
routeNameSignUpPage : (context) => const SignUpPage(),
56-
routeNameUserDetailsPage : (context) => const UserDetailsPage(),
57-
routeNameMyReservation : (context) => const MyReservationPage(),
35+
return FutureBuilder(
36+
future: _getInitialRoute(),
37+
builder: (context, snapshot) {
38+
// Show a loading spinner while waiting for future
39+
if (snapshot.connectionState == ConnectionState.waiting) {
40+
return const CircularProgressIndicator();
41+
}
42+
43+
if (snapshot.hasData) {
44+
return MaterialApp(
45+
debugShowCheckedModeBanner: false,
46+
title: 'Flutter Demo',
47+
builder: EasyLoading.init(),
48+
theme: ThemeData(
49+
primarySwatch: Colors.lightGreen,
50+
brightness: Brightness.dark,
51+
),
52+
initialRoute: snapshot.data as String,
53+
routes: {
54+
routeNameHome : (context) => const SearchPage(),
55+
routeNameSearchResultPage : (context) => const SearchResultPage(),
56+
routeNameSeatPlanPage : (context) => const SeatPlanPage(),
57+
routeNameBookingConfirmationPage : (context) => const BookingConfirmationPage(),
58+
routeNameAddBusPage : (context) => const AddBusPage(),
59+
routeNameAddRoutePage : (context) => const AddRoutePage(),
60+
routeNameScheduleListPage : (context) => const ScheduleListPage(),
61+
routeNameAddSchedulePage : (context) => const AddSchedulePage(),
62+
routeNameReservationPage : (context) => const ReservationPage(),
63+
routeNameLoginPage : (context) => const LoginPage(),
64+
routeNameAddCityPage : (context) => const AddCity(),
65+
routeNameSignUpPage : (context) => const SignUpPage(),
66+
routeNameUserDetailsPage : (context) => const UserDetailsPage(),
67+
routeNameMyReservation : (context) => const MyReservationPage(),
68+
},
69+
);
70+
} else {
71+
return const MaterialApp(
72+
home: Scaffold(
73+
body: Center(child: Text('Error determining initial route')),
74+
),
75+
);
76+
}
5877
},
5978
);
6079
}
80+
81+
Future<String> _getInitialRoute() async {
82+
bool loggedIn = await isUserLoggedIn();
83+
if (loggedIn) {
84+
String role = await getLoggedInUserRole();
85+
if (role == 'Admin') {
86+
return routeNameScheduleListPage;
87+
}
88+
}
89+
return routeNameHome;
90+
}
6191
}

lib/pages/add_schedule_page.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
33

44
import '../customwidgets/login_alert_dialog.dart';
5+
import '../drawers/main_drawer.dart';
56
import '../models/bus_model.dart';
67
import '../models/bus_schedule.dart';
78
import '../models/bus_route.dart';

lib/pages/schedule_list_page.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:provider/provider.dart';
3+
import '../drawers/main_drawer.dart';
34
import '../models/bus_schedule.dart';
45
import '../providers/app_data_provider.dart';
56
import '../utils/constants.dart';
@@ -46,6 +47,7 @@ class _ScheduleListPageState extends State<ScheduleListPage> {
4647
appBar: AppBar(
4748
title: const Text('All Schedule'),
4849
),
50+
drawer: const MainDrawer(),
4951
floatingActionButton: FloatingActionButton(
5052
onPressed: () async {
5153
// Navigator.pushNamed(context, routeNameAddSchedulePage);

0 commit comments

Comments
 (0)