Working On Calendar

main_design2.0
zaid_daoud 2 years ago
parent 456dc4bd77
commit 1091af7f23

@ -0,0 +1,11 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.47805 13.2405C8.47805 12.9399 8.23419 12.6963 7.9333 12.6963H6.03234C5.73179 12.6963 5.48788 12.9399 5.48788 13.2405V15.1412C5.48788 15.4422 5.73179 15.6859 6.03234 15.6859H7.9333C8.23419 15.6859 8.47805 15.4422 8.47805 15.1412V13.2405Z" fill="#163A51"/>
<path d="M13.2289 13.2405C13.2289 12.9399 12.985 12.6963 12.6847 12.6963H10.7835C10.483 12.6963 10.2391 12.9399 10.2391 13.2405V15.1412C10.2391 15.4422 10.483 15.6859 10.7835 15.6859H12.6847C12.985 15.6859 13.2289 15.4422 13.2289 15.1412V13.2405Z" fill="#163A51"/>
<path d="M17.9798 13.2405C17.9798 12.9399 17.7359 12.6963 17.4354 12.6963H15.5344C15.2335 12.6963 14.9897 12.9399 14.9897 13.2405V15.1412C14.9897 15.4422 15.2335 15.6859 15.5344 15.6859H17.4354C17.7359 15.6859 17.9798 15.4422 17.9798 15.1412V13.2405Z" fill="#163A51"/>
<path d="M8.47805 17.9918C8.47805 17.6906 8.23419 17.4473 7.9333 17.4473H6.03234C5.73179 17.4473 5.48788 17.6906 5.48788 17.9918V19.8921C5.48788 20.193 5.73179 20.4366 6.03234 20.4366H7.9333C8.23419 20.4366 8.47805 20.1929 8.47805 19.8921V17.9918Z" fill="#163A51"/>
<path d="M13.2289 17.9918C13.2289 17.6906 12.985 17.4473 12.6847 17.4473H10.7835C10.483 17.4473 10.2391 17.6906 10.2391 17.9918V19.8921C10.2391 20.193 10.483 20.4366 10.7835 20.4366H12.6847C12.985 20.4366 13.2289 20.1929 13.2289 19.8921V17.9918Z" fill="#163A51"/>
<path d="M17.9798 17.9918C17.9798 17.6906 17.7359 17.4473 17.4356 17.4473H15.5344C15.2335 17.4473 14.9897 17.6906 14.9897 17.9918V19.8921C14.9897 20.193 15.2335 20.4366 15.5344 20.4366H17.4356C17.7359 20.4366 17.9798 20.1929 17.9798 19.8921V17.9918Z" fill="#163A51"/>
<path d="M21.379 2.67253V5.57572C21.379 6.88793 20.3145 7.94537 19.0025 7.94537H17.5033C16.1912 7.94537 15.1126 6.88793 15.1126 5.57572V2.66211H8.35533V5.57572C8.35533 6.88793 7.27675 7.94537 5.96483 7.94537H4.46535C3.15339 7.94537 2.08892 6.88793 2.08892 5.57572V2.67253C0.942245 2.7071 0 3.65593 0 4.82217V21.8362C0 23.0244 0.963042 24.0002 2.15121 24.0002H21.3167C22.5031 24.0002 23.4679 23.0224 23.4679 21.8362V4.82217C23.4679 3.65593 22.5257 2.7071 21.379 2.67253ZM20.6827 20.7767C20.6827 21.2902 20.2664 21.7068 19.7527 21.7068H3.67424C3.16057 21.7068 2.74424 21.2902 2.74424 20.7767V11.9883C2.74424 11.4747 3.16052 11.0581 3.67424 11.0581H19.7526C20.2663 11.0581 20.6826 11.4747 20.6826 11.9883L20.6827 20.7767Z" fill="#163A51"/>
<path d="M4.46017 6.38874H5.94308C6.39318 6.38874 6.75813 6.02432 6.75813 5.57422V0.81481C6.75813 0.364656 6.39318 0 5.94308 0H4.46017C4.01001 0 3.64511 0.364656 3.64511 0.81481V5.57422C3.64511 6.02432 4.01001 6.38874 4.46017 6.38874Z" fill="#163A51"/>
<path d="M17.4842 6.38874H18.9671C19.4169 6.38874 19.7818 6.02432 19.7818 5.57422V0.81481C19.7819 0.364656 19.4169 0 18.9671 0H17.4842C17.0341 0 16.6691 0.364656 16.6691 0.81481V5.57422C16.6691 6.02432 17.0341 6.38874 17.4842 6.38874Z" fill="#163A51"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -306,5 +306,6 @@
"requesterName" : "اسم الطالب",
"updateWorkOrder" : "تعديل طلب العمل",
"createPreventiveMaintenanceRequest" : "إنشاء طلب صيانة وقائية",
"createNewRequest" : "إنشاء طلب جديد"
"createNewRequest" : "إنشاء طلب جديد",
"calendar" : "التقويم"
}

@ -310,5 +310,6 @@
"requesterName" : "Requester Name",
"updateWorkOrder" : "Update Work Order",
"createPreventiveMaintenanceRequest" : "Create Preventive Maintenance Request",
"createNewRequest" : "Create New Request"
"createNewRequest" : "Create New Request",
"calendar" : "Calendar"
}

@ -1,12 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../models/enums/translation_keys.dart';
class AppBottomNavigationBar extends StatelessWidget {
final Function(int index) onPressed;
final int selectedIndex;
@ -19,6 +20,7 @@ class AppBottomNavigationBar extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = Provider.of<UserProvider>(context, listen: false).user;
return ClipRRect(
borderRadius: const BorderRadius.only(topLeft: Radius.circular(20.0), topRight: Radius.circular(20.0)),
child: Container(
@ -39,7 +41,8 @@ class AppBottomNavigationBar extends StatelessWidget {
navBarItem(context, index: 0, iconName: "overview", label: context.translation.overview),
navBarItem(context, index: 1, iconName: "requests", label: context.translation.myRequests),
navBarItem(context, index: 2, iconName: "assets", label: context.translation.myAssets),
navBarItem(context, index: 3, iconName: "message", label: context.translation.contactUs),
navBarItem(context, index: 3, iconName: "calendar2", label: context.translation.calendar),
if (user.type == UsersTypes.engineer) navBarItem(context, index: 4, iconName: "message", label: context.translation.contactUs),
],
currentIndex: selectedIndex,
onTap: onPressed,

@ -0,0 +1,140 @@
import 'package:flutter/material.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../common_widgets/default_app_bar.dart';
class CalendarPage extends StatefulWidget {
const CalendarPage({Key key}) : super(key: key);
@override
State<CalendarPage> createState() => _CalendarPageState();
}
class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderStateMixin {
TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 3, vsync: this);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const DefaultAppBar(title: ""),
body: Column(
mainAxisSize: MainAxisSize.min,
children: [
Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
"My Shift".heading5(context),
8.height,
"Sunday to Thursday".bodyText(context),
"09:00 to 18:00".bodyText(context).custom(color: AppColor.neutral50),
],
).paddingAll(16),
),
16.height,
Container(
decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar(
controller: _tabController,
padding: EdgeInsets.zero,
labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20,
indicatorPadding: const EdgeInsets.all(4),
indicator: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
onTap: (index) {
setState(() {});
},
tabs: [
Tab(text: "Monthly", height: 57.toScreenHeight),
Tab(text: "Weekly", height: 57.toScreenHeight),
Tab(text: "Daily", height: 57.toScreenHeight),
],
),
),
8.height,
TabBarView(
physics: const NeverScrollableScrollPhysics(),
controller: _tabController,
children: [
CalendarCard(
calendarFormat: CalendarFormat.month,
child: Column(
children: [
16.height,
Row(
children: [
const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8),
8.width,
"My Requests".heading6(context),
],
),
16.height,
Row(
children: [
const CircleAvatar(backgroundColor: AppColor.green50, radius: 8),
8.width,
"My Team Requests".heading6(context),
],
),
],
),
),
CalendarCard(
calendarFormat: CalendarFormat.week,
child: Column(
children: [
const Divider().defaultStyle(context),
],
),
),
Container(),
],
).expanded,
],
).paddingAll(16),
);
}
}
class CalendarCard extends StatelessWidget {
final CalendarFormat calendarFormat;
final Widget child;
const CalendarCard({this.calendarFormat, this.child, Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Card(
child: Column(
children: [
TableCalendar(
firstDay: DateTime.utc(2010, 10, 16),
lastDay: DateTime.utc(2030, 3, 14),
focusedDay: DateTime.now(),
calendarFormat: calendarFormat,
weekendDays: const [],
headerStyle: HeaderStyle(
leftChevronIcon: null,
leftChevronMargin: EdgeInsets.zero,
leftChevronPadding: EdgeInsets.zero,
rightChevronMargin: EdgeInsets.zero,
rightChevronPadding: EdgeInsets.only(bottom: 16.toScreenHeight),
formatButtonVisible: false,
rightChevronIcon: const Icon(Icons.calendar_today, color: AppColor.neutral60, size: 18),
),
),
child,
],
).paddingOnly(start: 16, end: 16, top: 8, bottom: 8),
);
}
}

@ -3,10 +3,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/translation_keys.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_drawer.dart';
import 'package:test_sa/new_views/common_widgets/app_floating_action_button.dart';
import 'package:test_sa/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart';
import 'package:test_sa/new_views/pages/land_page/dashboard_fragments/recent_activites_fragment.dart';
import 'package:test_sa/new_views/pages/land_page/dashboard_fragments/requests_fragment.dart';
@ -122,7 +119,7 @@ class _DashboardPageState extends State<DashboardPage> {
onPageChanged: (index) => setState(() => _currentPage = index),
children: [
RequestsFragment(),
ProgressFragment(),
const ProgressFragment(),
RecentActivitiesFragment(),
],
).expanded,

@ -2,17 +2,15 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/new_views/pages/land_page/home_app_bar.dart';
import 'package:test_sa/new_views/pages/land_page/my_assets_page.dart';
import 'package:test_sa/new_views/pages/land_page/my_request/my_requests_page.dart';
import 'package:test_sa/views/pages/device_transfer/asset_search_screen.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/views/pages/user/land_page.dart' as old_page;
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart';
import '../../../controllers/providers/api/user_provider.dart';
import '../../../models/enums/user_types.dart';
import '../../common_widgets/app_bottom_nav_bar.dart';
import '../../common_widgets/app_drawer.dart';
import '../../common_widgets/app_floating_action_button.dart';
import 'calendar_page.dart';
import 'contact_us_bottom_sheet.dart';
import 'dashboard_page.dart';
@ -32,16 +30,18 @@ class _LandPageState extends State<LandPage> {
List<Widget> _pages;
@override
void initState() {
void didChangeDependencies() {
final user = Provider.of<UserProvider>(context, listen: false).user;
_pages = <Widget>[
DashboardPage(onDrawerPress: (() {
_scaffoldKey.currentState.isDrawerOpen ? _scaffoldKey.currentState.closeDrawer() : _scaffoldKey.currentState.openDrawer();
})),
old_page.LandPage(),
SingleDevicePicker(),
MyRequestsPage(),
const old_page.LandPage(),
// const MyRequestsPage(),
const SingleDevicePicker(),
if (user.type == UsersTypes.engineer) const CalendarPage(),
];
super.initState();
super.didChangeDependencies();
}
@override
@ -67,12 +67,12 @@ class _LandPageState extends State<LandPage> {
},
child: Scaffold(
key: _scaffoldKey,
drawer: AppDrawer(),
drawer: const AppDrawer(),
body: _pages[currentPageIndex],
bottomNavigationBar: AppBottomNavigationBar(
selectedIndex: currentPageIndex,
onPressed: (index) {
if (index == 3) {
if (index == _pages.length) {
showModalBottomSheet(
context: context,
useSafeArea: true,

@ -1,41 +1,36 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/enums/translation_keys.dart';
import '../../../app_style/app_color.dart';
import '../../../common_widgets/app_search_field.dart';
class MyRequestsPage extends StatelessWidget {
const MyRequestsPage({Key key}) : super(key: key);
const MyRequestsPage({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
return Scaffold(
appBar: AppBar(
leadingWidth: 0,
title: Padding(
padding: const EdgeInsets.only(bottom: 10),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(child: SizedBox(
height: 50,
child: AppSearchField())),
SizedBox(width: 20,),
Text(context.translation.filter, style: TextStyle(
color: AppColor.primary50,
fontSize: Theme.of(context).textTheme.bodySmall.fontSize,
fontWeight: FontWeight.w500
),)
const Expanded(child: SizedBox(height: 50, child: AppSearchField())),
const SizedBox(
width: 20,
),
Text(
context.translation.filter,
style: TextStyle(color: AppColor.primary50, fontSize: Theme.of(context).textTheme.bodySmall.fontSize, fontWeight: FontWeight.w500),
)
],
),
),
),
body: TabBarView(
children: const <Widget>[
body: const TabBarView(
children: <Widget>[
Center(
child: Text(""),
),

@ -1053,6 +1053,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "5.3.0"
simple_gesture_detector:
dependency: transitive
description:
name: simple_gesture_detector
sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592"
url: "https://pub.dev"
source: hosted
version: "0.2.0"
sky_engine:
dependency: transitive
description: flutter
@ -1138,6 +1146,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.0"
table_calendar:
dependency: "direct main"
description:
name: table_calendar
sha256: "7f1270313c0cdb245b583ed8518982c01d4a7e95869b3c30abcbae3b642c45d0"
url: "https://pub.dev"
source: hosted
version: "3.0.8"
term_glyph:
dependency: transitive
description:

@ -73,6 +73,7 @@ dependencies:
shimmer: ^2.0.0
flutter_advanced_switch: ^3.0.1
pie_chart: ^5.3.2
table_calendar: ^3.0.0
dev_dependencies:
flutter_test:

Loading…
Cancel
Save