1
0
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:
Uttkarsh-raj
2023-11-08 21:28:37 +05:30
parent ee5eedcb6e
commit 1fab92ce58
8 changed files with 118 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

@@ -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());
}
}

View File

@@ -43,3 +43,5 @@ class HomeAddNewTaskAddButtonClickedEvent extends HomeEvent {
required this.urgent,
});
}
class HomeDrawerButtonClickedEvent extends HomeEvent {}

View File

@@ -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 {}

View File

@@ -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,

View File

@@ -206,7 +206,7 @@ class _RegularTasksState extends State<RegularTasks> {
),
);
default:
return SizedBox();
return const SizedBox();
}
},
);

View File

@@ -206,7 +206,7 @@ class _UrgentTasksState extends State<UrgentTasks> {
),
);
default:
return SizedBox();
return const SizedBox();
}
},
);

View 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,
),
),
),
],
),
),
),
);
}
}