mirror of
https://github.com/Uttkarsh-raj/Plannerly.git
synced 2025-11-23 21:54:39 +02:00
added the drawer
This commit is contained in:
BIN
Frontend/plannerly/assets/images/plannerly.png
Normal file
BIN
Frontend/plannerly/assets/images/plannerly.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 227 KiB |
@@ -24,6 +24,7 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
|
||||
homeAddNewTaskCloseButtonClickedEvent);
|
||||
on<HomeAddNewTaskAddButtonClickedEvent>(
|
||||
homeAddNewTaskAddButtonClickedEvent);
|
||||
on<HomeDrawerButtonClickedEvent>(homeDrawerButtonClickedEvent);
|
||||
}
|
||||
|
||||
FutureOr<void> homeInitialEvent(
|
||||
@@ -210,4 +211,9 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
|
||||
emit(HomeUnableTofetchTasks(message: response["error"]));
|
||||
}
|
||||
}
|
||||
|
||||
FutureOr<void> homeDrawerButtonClickedEvent(
|
||||
HomeDrawerButtonClickedEvent event, Emitter<HomeState> emit) {
|
||||
emit(HomeDrawerButtonClickedState());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,3 +43,5 @@ class HomeAddNewTaskAddButtonClickedEvent extends HomeEvent {
|
||||
required this.urgent,
|
||||
});
|
||||
}
|
||||
|
||||
class HomeDrawerButtonClickedEvent extends HomeEvent {}
|
||||
|
||||
@@ -37,6 +37,8 @@ class HomeNavigateToUrgentTasksPage extends HomeActionState {}
|
||||
|
||||
class HomeNavigateToRegularTasksPage extends HomeActionState {}
|
||||
|
||||
class HomeDrawerButtonClickedState extends HomeActionState {}
|
||||
|
||||
//showing a snackbar is an action and thus we need an action state
|
||||
class HomeTaskDeletedState extends HomeActionState {}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:plannerly/screens/home/home_loading.dart';
|
||||
import 'package:plannerly/screens/regular_tasks/regular_tasks_page.dart';
|
||||
import 'package:plannerly/screens/urgent_tasks/urgent_tasks_page.dart';
|
||||
import 'package:plannerly/screens/widgets/custom_drawer.dart';
|
||||
import 'package:plannerly/screens/widgets/form_field.dart';
|
||||
import 'package:plannerly/screens/widgets/task.dart';
|
||||
import 'package:plannerly/utils/colors/colors.dart';
|
||||
@@ -18,6 +19,7 @@ class HomeScreen extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _HomeScreenState extends State<HomeScreen> {
|
||||
GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
final HomeBloc homeBloc = HomeBloc();
|
||||
TextEditingController titleContr = TextEditingController();
|
||||
TextEditingController descContr = TextEditingController();
|
||||
@@ -208,6 +210,8 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
} else if (state is HomeTaskAddedSuccessState) {
|
||||
Navigator.of(context).pop();
|
||||
homeBloc.add(HomeInitialEvent());
|
||||
} else if (state is HomeDrawerButtonClickedState) {
|
||||
_scaffoldKey.currentState?.openDrawer();
|
||||
}
|
||||
},
|
||||
builder: (context, state) {
|
||||
@@ -217,6 +221,8 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
case HomeLoadedSuccessState:
|
||||
final successState = state as HomeLoadedSuccessState;
|
||||
return Scaffold(
|
||||
key: _scaffoldKey,
|
||||
drawer: const CustomDrawer(),
|
||||
backgroundColor: AppColors.backgroundDark,
|
||||
body: Padding(
|
||||
padding: const EdgeInsets.all(14.0),
|
||||
@@ -232,15 +238,21 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(height: size.height * 0.03),
|
||||
const Row(
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.menu_outlined,
|
||||
size: 28,
|
||||
color: AppColors.white,
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
homeBloc
|
||||
.add(HomeDrawerButtonClickedEvent());
|
||||
},
|
||||
child: const Icon(
|
||||
Icons.menu_outlined,
|
||||
size: 28,
|
||||
color: AppColors.white,
|
||||
),
|
||||
),
|
||||
Icon(
|
||||
const Icon(
|
||||
Icons.notifications_outlined,
|
||||
size: 28,
|
||||
color: AppColors.white,
|
||||
|
||||
@@ -206,7 +206,7 @@ class _RegularTasksState extends State<RegularTasks> {
|
||||
),
|
||||
);
|
||||
default:
|
||||
return SizedBox();
|
||||
return const SizedBox();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
@@ -206,7 +206,7 @@ class _UrgentTasksState extends State<UrgentTasks> {
|
||||
),
|
||||
);
|
||||
default:
|
||||
return SizedBox();
|
||||
return const SizedBox();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
88
Frontend/plannerly/lib/screens/widgets/custom_drawer.dart
Normal file
88
Frontend/plannerly/lib/screens/widgets/custom_drawer.dart
Normal file
@@ -0,0 +1,88 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:plannerly/utils/colors/colors.dart';
|
||||
|
||||
class CustomDrawer extends StatefulWidget {
|
||||
const CustomDrawer({super.key});
|
||||
|
||||
@override
|
||||
State<CustomDrawer> createState() => _CustomDrawerState();
|
||||
}
|
||||
|
||||
class _CustomDrawerState extends State<CustomDrawer> {
|
||||
List<String> names = ["Home", "Urgent Tasks", "Regular Tasks"];
|
||||
List<IconData> icons = [
|
||||
Icons.home_outlined,
|
||||
Icons.task_alt_outlined,
|
||||
Icons.task_outlined
|
||||
];
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Size size = MediaQuery.of(context).size;
|
||||
return Drawer(
|
||||
backgroundColor: AppColors.backgroundDark,
|
||||
child: SafeArea(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: size.width * 0.2,
|
||||
child: Image.asset(
|
||||
'assets/images/logo_transparent.png',
|
||||
scale: 3,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: size.width * 0.45,
|
||||
child: Image.asset(
|
||||
'assets/images/plannerly.png',
|
||||
scale: 3,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 30),
|
||||
Expanded(
|
||||
child: ListView.separated(
|
||||
itemCount: 3,
|
||||
shrinkWrap: true,
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
itemBuilder: (context, index) {
|
||||
return ListTile(
|
||||
onTap: () {},
|
||||
leading: Icon(icons[index]),
|
||||
title: Text(
|
||||
names[index],
|
||||
style: const TextStyle(
|
||||
color: AppColors.white,
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
separatorBuilder: (context, index) =>
|
||||
const SizedBox(height: 3),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
onTap: () {},
|
||||
leading: const Icon(Icons.logout_outlined),
|
||||
title: const Text(
|
||||
'Logout',
|
||||
style: TextStyle(
|
||||
color: AppColors.white,
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user