diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index a180c82d..d4cb25fb 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -13,6 +13,7 @@ class AllRequestsProvider extends ChangeNotifier { bool isCloseLoading = false; bool isOverdueLoading = false; bool isHighPriorityLoading = false; + bool isCalendarLoading = false; int stateCode; @@ -22,6 +23,7 @@ class AllRequestsProvider extends ChangeNotifier { AllRequestsAndCount closeRequests; AllRequestsAndCount overdueRequests; AllRequestsAndCount highPriorityRequests; + AllRequestsAndCount calendarRequests; void getRequests() { getHighPriorityRequests(); @@ -61,6 +63,38 @@ class AllRequestsProvider extends ChangeNotifier { } } + Future getCalenderRequests({@required DateTime from, DateTime to}) async { + if (isCalendarLoading == true) return -2; + isCalendarLoading = true; + if (isCalendarLoading == null) notifyListeners(); + Response response; + try { + Map body = { + "typeTransaction": [1, 2, 3, 4], + "statusTransaction": [1, 2, 3], + "priority": [0, 1], + "displayData": [], + "from": from.toIso8601String(), + "to": to?.toIso8601String() ?? from.toIso8601String(), + }; + response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body); + + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + calendarRequests = AllRequestsAndCount.fromJson(json.decode(response.body)["data"]); + notifyListeners(); + } + isCalendarLoading = false; + notifyListeners(); + return response.statusCode; + } catch (error) { + isCalendarLoading = false; + stateCode = -1; + notifyListeners(); + return -1; + } + } + Future getHighPriorityRequests() async { if (isHighPriorityLoading == true) return -2; isHighPriorityLoading = true; diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index cc74b21b..79aadcf7 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -68,5 +68,5 @@ extension WidgetExtensions on Widget { } extension DividerExtension on Divider { - Divider defaultStyle(BuildContext context) => Divider(thickness: 1, color: context.isDark ? AppColor.neutral50 : AppColor.neutral30); + Divider defaultStyle(BuildContext context) => Divider(thickness: 1, color: context.isDark ? AppColor.neutral20 : AppColor.neutral30); } diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index 20ee38d3..f4f5c82e 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -307,7 +307,7 @@ "updateWorkOrder" : "تعديل طلب العمل", "createPreventiveMaintenanceRequest" : "إنشاء طلب صيانة وقائية", "createNewRequest" : "إنشاء طلب جديد", - "calendar" : "التقويم", + "calender" : "التقويم", "helpCenter" : "مركز المساعدة", "rateUs": "قيمنا", "settings" : " الاعدادات", @@ -349,7 +349,17 @@ "addItem" : "اضافة عنصر", "item" : "عنصر", "serialNo" : "رقم التسلسلي", - "measuredValue": "القيمة المقاسه" - + "measuredValue": "القيمة المقاسه", + "sureExit" : " هل انت متاكد من الخروج؟", + "daily" : "يومي", + "weekly" : "اسبوعي", + "monthly" : "شهري", + "myShift" : "ورديتي", + "myTeamRequest" : "طلب فريقي", + "sunToThurs": "الاحد الى الخميس", + "requestGasRefill" : "طلب اعادة تعبئة غاز", + "trackGasRefill" : "تتبع طلبات اعادة تعبئة غاز", + "trackAssetTransfer" : "تتبع نقل اجهزة", + "total" : "مجموع" } \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 7a369ad1..0ad23442 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -349,5 +349,16 @@ "addItem" : "Add Item", "item" : "Item", "measuredValue": "Measured Value", - "overdue": "Overdue" + "overdue": "Overdue", + "sureExit" : "Are you sure ypu want to Exit? ", + "daily" : "Daily", + "weekly" : "Weekly", + "monthly" : "Monthly", + "myShift" : "My Shift", + "myTeamRequest" : "My Team Request", + "sunToThurs": "Sunday to Thursday", + "requestGasRefill" : "Request Gas Refill", + "trackGasRefill" : "Track Gas Refill", + "trackAssetTransfer" : "Track Asset Transfer", + "total" : "Total" } \ No newline at end of file diff --git a/lib/models/all_requests_and_count_model.dart b/lib/models/all_requests_and_count_model.dart index aaff6111..d1186819 100644 --- a/lib/models/all_requests_and_count_model.dart +++ b/lib/models/all_requests_and_count_model.dart @@ -10,44 +10,44 @@ class AllRequestsAndCount { AllRequestsAndCount({this.countServiceRequest, this.countGasRefill, this.countAssetTransfer, this.countPPM, this.detailsStatusTotal, this.total, this.requestsDetails}); AllRequestsAndCount.fromJson(Map json) { - countServiceRequest = json['countServiceRequest'] != null ? new CountServiceRequest.fromJson(json['countServiceRequest']) : null; - countGasRefill = json['countGasRefill'] != null ? new CountServiceRequest.fromJson(json['countGasRefill']) : null; - countAssetTransfer = json['countAssetTransfer'] != null ? new CountServiceRequest.fromJson(json['countAssetTransfer']) : null; - countPPM = json['countPPM'] != null ? new CountServiceRequest.fromJson(json['countPPM']) : null; - detailsStatusTotal = json['detailsStatusTotal'] != null ? new DetailsStatusTotal.fromJson(json['detailsStatusTotal']) : null; - total = json['total'] != null ? new CountServiceRequest.fromJson(json['total']) : null; + countServiceRequest = json['countServiceRequest'] != null ? CountServiceRequest.fromJson(json['countServiceRequest']) : null; + countGasRefill = json['countGasRefill'] != null ? CountServiceRequest.fromJson(json['countGasRefill']) : null; + countAssetTransfer = json['countAssetTransfer'] != null ? CountServiceRequest.fromJson(json['countAssetTransfer']) : null; + countPPM = json['countPPM'] != null ? CountServiceRequest.fromJson(json['countPPM']) : null; + detailsStatusTotal = json['detailsStatusTotal'] != null ? DetailsStatusTotal.fromJson(json['detailsStatusTotal']) : null; + total = json['total'] != null ? CountServiceRequest.fromJson(json['total']) : null; if (json['requestsDetails'] != null) { requestsDetails = []; json['requestsDetails'].forEach((v) { - requestsDetails.add(new RequestsDetails.fromJson(v)); + requestsDetails.add(RequestsDetails.fromJson(v)); }); } } Map toJson() { - final Map data = new Map(); - if (this.countServiceRequest != null) { - data['countServiceRequest'] = this.countServiceRequest.toJson(); + final Map data = {}; + if (countServiceRequest != null) { + data['countServiceRequest'] = countServiceRequest.toJson(); } - if (this.countGasRefill != null) { - data['countGasRefill'] = this.countGasRefill.toJson(); + if (countGasRefill != null) { + data['countGasRefill'] = countGasRefill.toJson(); } - if (this.countAssetTransfer != null) { - data['countAssetTransfer'] = this.countAssetTransfer.toJson(); + if (countAssetTransfer != null) { + data['countAssetTransfer'] = countAssetTransfer.toJson(); } - if (this.countPPM != null) { - data['countPPM'] = this.countPPM.toJson(); + if (countPPM != null) { + data['countPPM'] = countPPM.toJson(); } - if (this.detailsStatusTotal != null) { - data['detailsStatusTotal'] = this.detailsStatusTotal.toJson(); + if (detailsStatusTotal != null) { + data['detailsStatusTotal'] = detailsStatusTotal.toJson(); } - if (this.total != null) { - data['total'] = this.total.toJson(); + if (total != null) { + data['total'] = total.toJson(); } - if (this.requestsDetails != null) { - data['requestsDetails'] = this.requestsDetails.map((v) => v.toJson()).toList(); + if (requestsDetails != null) { + data['requestsDetails'] = requestsDetails.map((v) => v.toJson()).toList(); } return data; } @@ -63,8 +63,8 @@ class CountServiceRequest { } Map toJson() { - final Map data = new Map(); - data['count'] = this.count; + final Map data = {}; + data['count'] = count; return data; } } @@ -83,10 +83,10 @@ class DetailsStatusTotal { } Map toJson() { - final Map data = new Map(); - data['open'] = this.open; - data['inProgress'] = this.inProgress; - data['closed'] = this.closed; + final Map data = {}; + data['open'] = open; + data['inProgress'] = inProgress; + data['closed'] = closed; return data; } } @@ -156,26 +156,26 @@ class RequestsDetails { } Map toJson() { - final Map data = new Map(); - data['id'] = this.id; - data['nameOfType'] = this.nameOfType; - data['priority'] = this.priority; - data['status'] = this.status; - data['assetName'] = this.assetName; - data['assetNo'] = this.assetNo; - data['assetSN'] = this.assetSN; - data['model'] = this.model; - data['supplier'] = this.supplier; - data['manufacturer'] = this.manufacturer; - data['requestType'] = this.requestType; - data['requestNo'] = this.requestNo; - data['gasType'] = this.gasType; - data['site'] = this.site; - data['statusReceiver'] = this.statusReceiver; - data['assetTransferFrom'] = this.assetTransferFrom; - data['assetTransferTo'] = this.assetTransferTo; - data['code'] = this.code; - data['date'] = this.date; + final Map data = {}; + data['id'] = id; + data['nameOfType'] = nameOfType; + data['priority'] = priority; + data['status'] = status; + data['assetName'] = assetName; + data['assetNo'] = assetNo; + data['assetSN'] = assetSN; + data['model'] = model; + data['supplier'] = supplier; + data['manufacturer'] = manufacturer; + data['requestType'] = requestType; + data['requestNo'] = requestNo; + data['gasType'] = gasType; + data['site'] = site; + data['statusReceiver'] = statusReceiver; + data['assetTransferFrom'] = assetTransferFrom; + data['assetTransferTo'] = assetTransferTo; + data['code'] = code; + data['date'] = date; return data; } } diff --git a/lib/new_views/common_widgets/app_drawer.dart b/lib/new_views/common_widgets/app_drawer.dart index 5b2d4b58..1c61ef00 100644 --- a/lib/new_views/common_widgets/app_drawer.dart +++ b/lib/new_views/common_widgets/app_drawer.dart @@ -68,20 +68,20 @@ class AppDrawer extends StatelessWidget { // "logout" : "خروج" padding: const EdgeInsets.only(top: 24), children: [ - drawerItem("drawer_notification", context.translation.notifications).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)), + drawerItem("drawer_notification", context.translation.notifications, context).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)), 18.height, - drawerItem("help_center", context.translation.helpCenter) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/, + drawerItem("help_center", context.translation.helpCenter, context) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/, 18.height, - drawerItem("rate_us", context.translation.rateUs), + drawerItem("rate_us", context.translation.rateUs, context), 18.height, - drawerItem("setting", context.translation.settings).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)), + drawerItem("setting", context.translation.settings, context).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)), 18.height, - drawerItem("report", context.translation.reportBg) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/, + drawerItem("report", context.translation.reportBg, context) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/, 18.height, - drawerItem("whats_new", context.translation.whatsNew), + drawerItem("whats_new", context.translation.whatsNew, context), ], ).expanded, - drawerItem("logout", context.translation.logout, color: AppColor.red50).onPress(() async { + drawerItem("logout", context.translation.logout, context, color: AppColor.red50).onPress(() async { bool result = await showDialog( context: context, builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert), @@ -101,7 +101,7 @@ class AppDrawer extends StatelessWidget { children: [ Text( "Powered By Cloud Solutions", - style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12), + style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral10 : AppColor.neutral50, fontSize: 12), textScaleFactor: AppStyle.getScaleFactor(context), ), 6.width, @@ -113,7 +113,7 @@ class AppDrawer extends StatelessWidget { ); } - Widget drawerItem(String icon, String title, {Color color}) { + Widget drawerItem(String icon, String title, BuildContext context,{Color color}) { return Row( children: [ SvgPicture.asset( @@ -125,7 +125,7 @@ class AppDrawer extends StatelessWidget { 16.width, Text( title, - style: AppTextStyles.heading6.copyWith(color: color ?? const Color(0xFF3B3D4A)), + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50,), ), ], ); diff --git a/lib/new_views/pages/land_page/calendar_page.dart b/lib/new_views/pages/land_page/calendar_page.dart index c067b5de..e5f72479 100644 --- a/lib/new_views/pages/land_page/calendar_page.dart +++ b/lib/new_views/pages/land_page/calendar_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.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/extensions/widget_extensions.dart'; @@ -38,31 +39,31 @@ class _CalendarPageState extends State with SingleTickerProviderSt child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "My Shift".heading5(context), + context.translation.myShift.heading5(context), 8.height, - "Sunday to Thursday".bodyText(context), - "09:00 to 18:00".bodyText(context).custom(color: AppColor.neutral50), + context.translation.sunToThurs.bodyText(context), + "09:00 to 18:00".bodyText(context).custom(color: context.isDark? AppColor.neutral10: AppColor.neutral50), ], ).toShadowContainer(context), ).paddingOnly(start: 16, end: 16), 16.height, Container( margin: const EdgeInsets.only(left: 16, right: 16), - decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)), + decoration: BoxDecoration(color: context.isDark? AppColor.neutral10: 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)), + indicator: BoxDecoration(color: context.isDark? AppColor.neutral20: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), + Tab(text: context.translation.monthly, height: 57.toScreenHeight), + Tab(text: context.translation.weekly, height: 57.toScreenHeight), + Tab(text: context.translation.daily, height: 57.toScreenHeight), ], ), ), diff --git a/lib/new_views/pages/land_page/calender_fragments/calendar_header.dart b/lib/new_views/pages/land_page/calender_fragments/calendar_header.dart index 63a46837..c1b7b215 100644 --- a/lib/new_views/pages/land_page/calender_fragments/calendar_header.dart +++ b/lib/new_views/pages/land_page/calender_fragments/calendar_header.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.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/extensions/widget_extensions.dart'; @@ -19,9 +20,9 @@ class CalendarHeader extends StatelessWidget { children: [ dateFormat.format(dateTime).heading5(context), 6.width, - const Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: AppColor.neutral60, size: 24)), + Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: context.isDark? AppColor.neutral10:AppColor.neutral60, size: 24)), const Spacer(), - const Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.calendar_today, color: AppColor.neutral60, size: 18)), + Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.calendar_today, color: context.isDark? AppColor.neutral10:AppColor.neutral60, size: 18)), ], ), 8.height, diff --git a/lib/new_views/pages/land_page/calender_fragments/calender_days_card.dart b/lib/new_views/pages/land_page/calender_fragments/calender_days_card.dart index 925929b6..a3c05d18 100644 --- a/lib/new_views/pages/land_page/calender_fragments/calender_days_card.dart +++ b/lib/new_views/pages/land_page/calender_fragments/calender_days_card.dart @@ -6,16 +6,13 @@ import '../../../app_style/app_color.dart'; class CalendarDaysCard extends StatelessWidget { final String day; - const CalendarDaysCard({Key key, @required this.day}) : super(key: key); + final bool fill; + const CalendarDaysCard({Key key, @required this.day, this.fill = false}) : super(key: key); @override Widget build(BuildContext context) { - final bgColor = day == "1" ? AppColor.neutral30 : (day == "2" ? AppColor.primary40 : AppColor.green50).withOpacity(0.3); - final dotColor = (day == "1" - ? Colors.transparent - : day == "2" - ? AppColor.primary40 - : AppColor.green50); + final bgColor = fill ? AppColor.primary40.withOpacity(0.3) : AppColor.neutral30; + final dotColor = fill ? AppColor.primary40 : AppColor.green50; return SizedBox( height: 45.toScreenWidth, width: 45.toScreenWidth, @@ -28,11 +25,12 @@ class CalendarDaysCard extends StatelessWidget { decoration: BoxDecoration(shape: BoxShape.circle, color: bgColor), child: day.bodyText(context).custom(color: AppColor.neutral50), ), - PositionedDirectional( - bottom: 16.toScreenHeight, - end: 16.toScreenWidth, - child: CircleAvatar(backgroundColor: dotColor, radius: 2.5), - ), + if (fill) + PositionedDirectional( + bottom: 16.toScreenHeight, + end: 16.toScreenWidth, + child: CircleAvatar(backgroundColor: dotColor, radius: 2.5), + ), ], ), ); diff --git a/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart b/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart index c0182e20..a2acd887 100644 --- a/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart +++ b/lib/new_views/pages/land_page/calender_fragments/daily_fragment.dart @@ -1,5 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/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/extensions/widget_extensions.dart'; + +import '../../../../controllers/providers/api/all_requests_provider.dart'; +import '../requests/asset_item_view.dart'; +import '../requests/gas_refill_item_view.dart'; +import '../requests/ppm_item_view.dart'; +import '../requests/service_request_item_view.dart'; class DailyFragment extends StatefulWidget { const DailyFragment({Key key}) : super(key: key); @@ -11,11 +22,10 @@ class DailyFragment extends StatefulWidget { } class _DailyFragmentState extends State { - DateTime currentDateTime = DateTime.now(); - @override void initState() { super.initState(); + Provider.of(context, listen: false).getCalenderRequests(from: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day)); } @override @@ -26,9 +36,46 @@ class _DailyFragmentState extends State { @override Widget build(BuildContext context) { return SingleChildScrollView( - child: Column( - children: ["Daily".heading5(context)], - ), - ); + child: Consumer(builder: (context, snapshot, _) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + snapshot.isCalendarLoading ? const Center(child: CircularProgressIndicator()) : DateFormat("EEEE, d MMMM, yyyy", context.isAr? "ar" : "en").format(DateTime.now()).heading5(context), + if (snapshot.calendarRequests?.requestsDetails?.isNotEmpty ?? false) const Divider().defaultStyle(context), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (cxt, index) { + final list = snapshot.calendarRequests.requestsDetails; + if (snapshot.isCalendarLoading) return const SizedBox().toRequestShimmer(cxt, snapshot.isCalendarLoading); + bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; + bool isGasRefill = list[index].nameOfType == "GasRefill"; + bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; + bool isPPMs = list[index].nameOfType == "PPMs"; + + return isServiceRequest + ? ServiceRequestItemView(list[index]) + : isGasRefill + ? GasRefillItemView(list[index]) + : isPPMs + ? PpmItemView(list[index]) + : isAssetTransfer + ? AssetItemView(list[index]) + : Container( + height: 100, + width: double.infinity, + color: Colors.grey, + ); + }, + separatorBuilder: (cxt, index) => 8.height, + itemCount: snapshot.isCalendarLoading ? 6 : snapshot.calendarRequests.requestsDetails.length, + ), + ], + ).toShadowContainer(context); + }), + ).paddingOnly(start: 16, end: 16); } + + BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle); } diff --git a/lib/new_views/pages/land_page/calender_fragments/monthly_fragment.dart b/lib/new_views/pages/land_page/calender_fragments/monthly_fragment.dart index a06d31b2..ace1b1a2 100644 --- a/lib/new_views/pages/land_page/calender_fragments/monthly_fragment.dart +++ b/lib/new_views/pages/land_page/calender_fragments/monthly_fragment.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; import 'package:table_calendar/table_calendar.dart'; +import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import '../../../../controllers/providers/api/all_requests_provider.dart'; import '../../../../extensions/text_extensions.dart'; import '../../../app_style/app_color.dart'; import 'calendar_header.dart'; @@ -17,49 +20,81 @@ class MonthlyFragment extends StatefulWidget { } class _MonthlyFragmentState extends State { - PageController _controller; + DateTime _initialDate, _firstDate, _lastDate; + + @override + void initState() { + super.initState(); + _initialDate = DateTime.now(); + _firstDate = DateTime.utc(2010, 10, 16); + _lastDate = DateTime.utc(2030, 3, 14); + Provider.of(context, listen: false).getCalenderRequests( + from: DateTime.now().subtract(const Duration(days: 31)), + to: DateTime.now(), + ); + } @override Widget build(BuildContext context) { return SingleChildScrollView( - //physics: BouncingScrollPhysics(), padding: const EdgeInsets.all(16), child: Column( children: [ - TableCalendar( - firstDay: DateTime.utc(2010, 10, 16), - lastDay: DateTime.utc(2030, 3, 14), - focusedDay: DateTime.now(), - calendarFormat: CalendarFormat.month, - weekendDays: const [], - rowHeight: 45, - availableGestures: AvailableGestures.none, - onCalendarCreated: (controller) { - _controller = controller; - }, - calendarBuilders: CalendarBuilders( - headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime), - dowBuilder: (context, dateTime) { - final day = DateFormat("EE").format(dateTime).toUpperCase(); - return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); - }, - defaultBuilder: (context, dateTime, _) { - final day = DateFormat("d").format(dateTime); - return CalendarDaysCard(day: day); - }, - ), - daysOfWeekHeight: 35.toScreenHeight, - headerStyle: const HeaderStyle( - leftChevronVisible: false, - rightChevronVisible: false, - formatButtonVisible: false, - headerPadding: EdgeInsets.all(0), - ), - calendarStyle: CalendarStyle( - isTodayHighlighted: false, - defaultTextStyle: AppTextStyles.bodyText, - defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), - ), + Consumer( + builder: (context, snapshot, _) => snapshot.isCalendarLoading + ? const Center(child: CircularProgressIndicator()) + : TableCalendar( + firstDay: _firstDate, + lastDay: _lastDate, + focusedDay: _initialDate, + calendarFormat: CalendarFormat.month, + weekendDays: const [], + rowHeight: 45, + availableGestures: AvailableGestures.none, + calendarBuilders: CalendarBuilders( + headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy", context.isAr? "ar" : "en"), dateTime: dateTime).onPress(() async { + final result = await showDatePicker( + context: context, + initialDate: _initialDate, + firstDate: _firstDate, + lastDate: _lastDate, + initialDatePickerMode: DatePickerMode.year, + ); + await snapshot.getCalenderRequests(from: DateTime(result.year, result.month), to: DateTime.now()); + if (result != null) { + _initialDate = result; + setState(() {}); + } + }), + dowBuilder: (context, dateTime) { + final day = DateFormat("EE", context.isAr? "ar" : "en").format(dateTime).toUpperCase(); + return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); + }, + defaultBuilder: (context, dateTime, _) { + final day = DateFormat("d").format(dateTime); + return CalendarDaysCard( + day: day, + fill: snapshot.calendarRequests.requestsDetails?.firstWhere( + (element) => (element.date != null) && (DateTime.tryParse(element.date)?.difference(dateTime)?.inDays == 0), + orElse: () => null, + ) != + null, + ); + }, + ), + daysOfWeekHeight: 35.toScreenHeight, + headerStyle: const HeaderStyle( + leftChevronVisible: false, + rightChevronVisible: false, + formatButtonVisible: false, + headerPadding: EdgeInsets.all(0), + ), + calendarStyle: CalendarStyle( + isTodayHighlighted: false, + defaultTextStyle: AppTextStyles.bodyText, + defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), + ), + ), ), Column( mainAxisSize: MainAxisSize.min, @@ -69,17 +104,19 @@ class _MonthlyFragmentState extends State { children: [ const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8), 8.width, - "My Requests".heading6(context), + context.translation.myRequests.heading6(context), ], ), 16.height, - Row( - children: [ - const CircleAvatar(backgroundColor: AppColor.green50, radius: 8), - 8.width, - "My Team Requests".heading6(context), - ], - ), + + /// TODO : TBD + // Row( + // children: [ + // const CircleAvatar(backgroundColor: AppColor.green50, radius: 8), + // 8.width, + // "My Team Requests".heading6(context), + // ], + // ), ], ), ], diff --git a/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart b/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart index cceb4358..62dde8b7 100644 --- a/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart +++ b/lib/new_views/pages/land_page/calender_fragments/weekly_fragment.dart @@ -1,11 +1,18 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; import 'package:table_calendar/table_calendar.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/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import '../../../../controllers/providers/api/all_requests_provider.dart'; +import '../requests/asset_item_view.dart'; +import '../requests/gas_refill_item_view.dart'; +import '../requests/ppm_item_view.dart'; +import '../requests/service_request_item_view.dart'; import 'calender_days_card.dart'; class WeeklyFragment extends StatefulWidget { @@ -18,12 +25,15 @@ class WeeklyFragment extends StatefulWidget { } class _WeeklyFragmentState extends State { - DateTime currentDateTime = DateTime.now(); - PageController _controller; + DateTime _initialDate, _firstDate, _lastDate; @override void initState() { super.initState(); + _initialDate = DateTime.now(); + _firstDate = DateTime.utc(2010, 10, 16); + _lastDate = DateTime.utc(2030, 3, 14); + Provider.of(context, listen: false).getCalenderRequests(from: DateTime.now().subtract(const Duration(days: 7)), to: DateTime.now()); } @override @@ -34,68 +44,106 @@ class _WeeklyFragmentState extends State { @override Widget build(BuildContext context) { return SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TableCalendar( - firstDay: DateTime.utc(2010, 10, 16), - lastDay: DateTime.utc(2030, 3, 14), - focusedDay: DateTime.now(), - calendarFormat: CalendarFormat.week, - weekendDays: const [], - onCalendarCreated: (controller) { - _controller = controller; - }, - calendarBuilders: CalendarBuilders( - headerTitleBuilder: (context, dateTime) => Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - DateFormat("EEEE, d MMMM, yyyy").format(dateTime).heading5(context), - 8.height, - const Divider().defaultStyle(context), - ], - ), - dowBuilder: (context, dateTime) { - final day = DateFormat("EE").format(dateTime).toUpperCase(); - return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); - }, - defaultBuilder: (context, dateTime, _) { - final day = DateFormat("d").format(dateTime); - return CalendarDaysCard(day: day); + child: Consumer(builder: (context, snapshot, _) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + snapshot.isCalendarLoading + ? const Center(child: CircularProgressIndicator()) + : TableCalendar( + firstDay: _firstDate, + lastDay: _lastDate, + focusedDay: _initialDate, + calendarFormat: CalendarFormat.week, + weekendDays: const [], + onCalendarCreated: (controller) {}, + calendarBuilders: CalendarBuilders( + headerTitleBuilder: (context, dateTime) => Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + DateFormat("EEEE, d MMMM, yyyy", context.isAr? "ar" : "en").format(dateTime).heading5(context), + 8.height, + const Divider().defaultStyle(context), + ], + ), + dowBuilder: (context, dateTime) { + final day = DateFormat("EE", context.isAr? "ar" : "en").format(dateTime).toUpperCase(); + return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); + }, + defaultBuilder: (context, dateTime, _) { + final day = DateFormat("d").format(dateTime); + return CalendarDaysCard( + day: day, + fill: snapshot.calendarRequests.requestsDetails?.firstWhere( + (element) => (element.date != null) && (DateTime.tryParse(element.date)?.difference(dateTime)?.inDays == 0), + orElse: () => null, + ) != + null, + ); + }, + ), + daysOfWeekHeight: 35.toScreenHeight, + headerStyle: const HeaderStyle(leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false), + calendarStyle: CalendarStyle( + isTodayHighlighted: false, + defaultTextStyle: AppTextStyles.bodyText, + defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), + ), + ), + if (snapshot.calendarRequests?.requestsDetails?.isNotEmpty ?? false) const Divider().defaultStyle(context), + ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (cxt, index) { + final list = snapshot.calendarRequests.requestsDetails; + if (snapshot.isCalendarLoading) return const SizedBox().toRequestShimmer(cxt, snapshot.isCalendarLoading); + bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; + bool isGasRefill = list[index].nameOfType == "GasRefill"; + bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; + bool isPPMs = list[index].nameOfType == "PPMs"; + + return isServiceRequest + ? ServiceRequestItemView(list[index]) + : isGasRefill + ? GasRefillItemView(list[index]) + : isPPMs + ? PpmItemView(list[index]) + : isAssetTransfer + ? AssetItemView(list[index]) + : Container( + height: 100, + width: double.infinity, + color: Colors.grey, + ); }, + separatorBuilder: (cxt, index) => 8.height, + itemCount: snapshot.isCalendarLoading ? 6 : snapshot.calendarRequests.requestsDetails.length, ), - daysOfWeekHeight: 35.toScreenHeight, - headerStyle: const HeaderStyle(leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false), - calendarStyle: CalendarStyle( - isTodayHighlighted: false, - defaultTextStyle: AppTextStyles.bodyText, - defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), - ), - ), - // TableCalendar( - // headerVisible: false, - // calendarFormat: CalendarFormat.week, - // firstDay: DateTime.utc(2010, 10, 16), - // lastDay: DateTime.utc(2030, 3, 14), - // focusedDay: currentDateTime, - // currentDay: currentDateTime, - // rowHeight: 37, - // calendarStyle: CalendarStyle( - // todayDecoration: cellDecoration(), - // todayTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), - // selectedTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), - // rangeStartTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), - // rangeEndTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), - // ), - // daysOfWeekStyle: DaysOfWeekStyle( - // weekdayStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50), - // weekendStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50), - // ), - // availableGestures: AvailableGestures.none, - // ), - ], - ).toShadowContainer(context), - ); + // TableCalendar( + // headerVisible: false, + // calendarFormat: CalendarFormat.week, + // firstDay: DateTime.utc(2010, 10, 16), + // lastDay: DateTime.utc(2030, 3, 14), + // focusedDay: currentDateTime, + // currentDay: currentDateTime, + // rowHeight: 37, + // calendarStyle: CalendarStyle( + // todayDecoration: cellDecoration(), + // todayTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), + // selectedTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), + // rangeStartTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), + // rangeEndTextStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF2B353E)), + // ), + // daysOfWeekStyle: DaysOfWeekStyle( + // weekdayStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50), + // weekendStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral50), + // ), + // availableGestures: AvailableGestures.none, + // ), + ], + ).toShadowContainer(context); + }), + ).paddingOnly(start: 16, end: 16); } BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle); diff --git a/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart b/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart index 01a1a211..221045c2 100644 --- a/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart +++ b/lib/new_views/pages/land_page/dashboard_fragments/progress_fragment.dart @@ -39,7 +39,7 @@ class ProgressFragment extends StatelessWidget { initialAngleInDegree: 270, chartType: ChartType.ring, ringStrokeWidth: 40.toScreenWidth, - centerText: "Total\n20", + centerText: "${context.translation.total}\n20", centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), legendOptions: const LegendOptions(showLegends: false), chartValuesOptions: ChartValuesOptions( @@ -69,9 +69,9 @@ class ProgressFragment extends StatelessWidget { // setState(() {}); }, tabs: [ - Tab(text: "Open", height: 57.toScreenHeight), - Tab(text: "In Progress", height: 57.toScreenHeight), - Tab(text: "Completed", height: 57.toScreenHeight), + Tab(text: context.translation.open, height: 57.toScreenHeight), + Tab(text: context.translation.inProgress, height: 57.toScreenHeight), + Tab(text: context.translation.completed, height: 57.toScreenHeight), ], ), ), diff --git a/lib/new_views/pages/land_page/dashboard_fragments/requests_fragment.dart b/lib/new_views/pages/land_page/dashboard_fragments/requests_fragment.dart index bf91baa0..f4645ece 100644 --- a/lib/new_views/pages/land_page/dashboard_fragments/requests_fragment.dart +++ b/lib/new_views/pages/land_page/dashboard_fragments/requests_fragment.dart @@ -42,7 +42,7 @@ class RequestsFragment extends StatelessWidget { children: [ Text( value, - style: AppTextStyles.heading1.copyWith(color: AppColor.neutral70, height: 1), + style: AppTextStyles.heading1.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, height: 1), ).toShimmer(isShow: isLoading).expanded, 8.width, SvgPicture.asset('assets/images/$icon.svg', height: 35, width: 35).toShimmer(isShow: isLoading), @@ -50,7 +50,7 @@ class RequestsFragment extends StatelessWidget { ).expanded, Text( "$title\n${context.translation.requests}", - style: AppTextStyles.heading5.copyWith(color: AppColor.neutral50), + style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,), ).toShimmer(isShow: isLoading), 8.height, Row( diff --git a/lib/new_views/pages/land_page/dashboard_page.dart b/lib/new_views/pages/land_page/dashboard_page.dart index 722a6b6e..8368265d 100644 --- a/lib/new_views/pages/land_page/dashboard_page.dart +++ b/lib/new_views/pages/land_page/dashboard_page.dart @@ -39,7 +39,7 @@ class _DashboardPageState extends State { return Scaffold( appBar: AppBar( automaticallyImplyLeading: false, - backgroundColor: const Color(0xffF8F9FB), + backgroundColor: context.isDark ? AppColor.neutral70 : Color(0xffF8F9FB), titleSpacing: 0, title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index bc348879..73c2be5a 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -75,7 +75,7 @@ class _DeviceTransferDetailsState extends State { Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + context.translation.transferDetails.heading5(context), 8.height, Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -109,7 +109,7 @@ class _DeviceTransferDetailsState extends State { // ), 1.width, Text(widget.model.createdOn != null ? widget.model.createdOn.toServiceRequestCardFormat : "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color:context.isDark? AppColor.neutral10: Color(0xFF3B3D4A))), ], ), ], @@ -163,78 +163,63 @@ class _DeviceTransferDetailsState extends State { } _buildDetailsCard(Widget widget) { - return Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), - ), - child: widget, - ).paddingOnly(top: 14, start: 14, end: 14); + return widget.toShadowContainer(context).paddingOnly(top: 14, start: 14, end: 14); } _buildTextWidget(String text) { - return Text( - text, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ); + return text.bodyText(context); } _buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}) { - return Container( - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - statusLabel ?? Container(), - 8.height, - Text(isSender ? context.translation.senderDetails : context.translation.receiverDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - ], - ), - if ((_userProvider.user?.type == UsersTypes.engineer) && (isSender ? _model.senderMachineStatusName != "Closed" : _model.receiverMachineStatusName != "Closed")) - CircleAvatar( - radius: 25, - backgroundColor: AppColor.neutral30, - child: CircleAvatar( - radius: 24, - backgroundColor: Colors.white, - child: Padding( - padding: const EdgeInsets.only(left: 3.0), - child: SvgPicture.asset('assets/images/update.svg'), - ), + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + statusLabel ?? Container(), + 8.height, + isSender ? context.translation.senderDetails.heading5(context) : context.translation.receiverDetails.heading5(context), + ], + ), + if ((_userProvider.user?.type == UsersTypes.engineer) && (isSender ? _model.senderMachineStatusName != "Closed" : _model.receiverMachineStatusName != "Closed")) + CircleAvatar( + radius: 25, + backgroundColor: AppColor.neutral30, + child: CircleAvatar( + radius: 24, + backgroundColor: Colors.white, + child: Padding( + padding: const EdgeInsets.only(left: 3.0), + child: SvgPicture.asset('assets/images/update.svg'), ), - ).onPress(isSender - ? () { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); - } - : () { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); - }), - ], - ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildTextWidget('${context.translation.site} : $site'), - _buildTextWidget('${context.translation.unite} : $unit'), - 8.height, - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 8.height, - _buildTextWidget(comment), - ], - ), - 8.height, - ], - ).paddingAll(14), - ).paddingOnly(top: 14, start: 14, end: 14); + ), + ).onPress(isSender + ? () { + Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); + } + : () { + Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); + }), + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTextWidget('${context.translation.site} : $site'), + _buildTextWidget('${context.translation.unite} : $unit'), + 8.height, + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 8.height, + _buildTextWidget(comment), + ], + ), + 8.height, + ], + ).toShadowContainer(context).paddingOnly(top: 14, start: 14, end: 14); } int getIdstatus(String status) { diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 146b2b1a..bf01a34a 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -206,32 +206,15 @@ class _UpdateDeviceTransferState extends State { } _buildCard() { - return Container( - width: MediaQuery.of(context).size.width, - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(15), - ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - 8.height, - Text( - '${context.translation.assetName}: ${_formModel.assetName}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - - ///TBD - Text( - '${context.translation.requesterName}: ', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - ], - ).paddingAll(16), - ); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + context.translation.transferDetails.heading5(context), + 8.height, + '${context.translation.assetName}: ${_formModel.assetName}'.bodyText(context), + ///TBDZ + '${context.translation.requesterName}: '.bodyText(context), + ], + ).toShadowContainer(context); } } diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index b768f7ed..5688996f 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -66,166 +66,142 @@ class _GasRefillDetailsPageState extends State { } Widget informationCard() { - return Container( - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - /// TBD - //StatusLabel( - //label: item.priority.name, - //id: serviceRequest.priority.id, - //textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id), - //backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id) - //), - // 8.width, - StatusLabel( - label: widget.model.status?.name ?? "", - textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0), - backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)), - 8.height, - Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - 8.height, + return Column( + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + /// TBD + //StatusLabel( + //label: item.priority.name, + //id: serviceRequest.priority.id, + //textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id), + //backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id) + //), + // 8.width, + StatusLabel( + label: widget.model.status?.name ?? "", + textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0), + backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)), + 8.height, + context.translation.gasRefillRequest.heading5(context), + 8.height, - ///TBD - Text( - context.translation.gasRequest, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.site}: ${widget.model.site.name}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - ], - ), - 1.width.expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - if (_userProvider.user.type == UsersTypes.engineer && (widget.model.status?.value ?? 0) != 2) - CircleAvatar( - radius: 25, - backgroundColor: AppColor.neutral30, - child: CircleAvatar( - radius: 24, - backgroundColor: Colors.white, - child: Padding( - padding: const EdgeInsets.only(left: 3.0), - child: SvgPicture.asset('assets/images/update.svg'), - ), + ///TBD + context.translation.gasRequest.bodyText(context), + '${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}'.bodyText(context), + '${context.translation.site}: ${widget.model.site.name}'.bodyText(context), + ], + ), + 1.width.expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + if (_userProvider.user.type == UsersTypes.engineer && (widget.model.status?.value ?? 0) != 2) + CircleAvatar( + radius: 25, + backgroundColor: AppColor.neutral30, + child: CircleAvatar( + radius: 24, + backgroundColor: Colors.white, + child: Padding( + padding: const EdgeInsets.only(left: 3.0), + child: SvgPicture.asset('assets/images/update.svg'), ), - ).onPress( - () async { - _model?.fromGasRefillModel(widget.model); - // setState(() {}); - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => RequestGasRefill( - gasRefillModel: widget.model, - ), - ), - ).then((value) { - if (value != null) { - _model = value; - } - }); - setState(() {}); - }, ), - Text(widget.model.startDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), - ], - ) - ], - ), - 8.height, - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 8.height, - Text( - '${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - 8.height, - ], - ).paddingAll(16), + ).onPress( + () async { + _model?.fromGasRefillModel(widget.model); + // setState(() {}); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => RequestGasRefill( + gasRefillModel: widget.model, + ), + ), + ).then((value) { + if (value != null) { + _model = value; + } + }); + setState(() {}); + }, + ), + Text(widget.model.startDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + ], + ) + ], + ), + 8.height, + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 8.height, + '${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}'.bodyText(context), + '${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}'.bodyText(context), + 8.height, + ], + ).paddingAll(16), - /// TBD - (_userProvider.user.type == UsersTypes.normal_user - ? Container( - height: 50, - padding: const EdgeInsets.only(left: 16, right: 16), - alignment: Alignment.center, - width: double.infinity, - decoration: const ShapeDecoration( - color: Color(0xFFEAF1F4), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(20), - bottomRight: Radius.circular(20), - ), + /// TBD + (_userProvider.user.type == UsersTypes.normal_user + ? Container( + height: 50, + padding: const EdgeInsets.only(left: 16, right: 16), + alignment: Alignment.center, + width: double.infinity, + decoration: const ShapeDecoration( + color: Color(0xFFEAF1F4), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(20), + bottomRight: Radius.circular(20), ), ), - child: Row( + ), + child: Row( + children: [ + Text( + '${context.translation.commentHere}...', + style: AppTextStyles.heading6.copyWith( + color: AppColor.neutral50.withOpacity(.6), + ), + ).expanded, + SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70), + ], + ), + ) + : Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 16.height, + Row( + mainAxisSize: MainAxisSize.min, children: [ Text( - '${context.translation.commentHere}...', - style: AppTextStyles.heading6.copyWith( - color: AppColor.neutral50.withOpacity(.6), - ), - ).expanded, - SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70), + '${context.translation.viewComments}', + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) ], ), - ) - : Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 16.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - '${context.translation.viewComments}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), - ), - 4.width, - const Icon( - Icons.arrow_forward, - color: Color(0xFF4A8DB7), - size: 14, - ) - ], - ), - ], - ).paddingOnly(bottom: 16, start: 16, end: 16)) - .onPress(() {}), - ], - ), - ).paddingAll(16); + ], + ).paddingOnly(bottom: 16, start: 16, end: 16)) + .onPress(() {}), + ], + ).toShadowContainer(context).paddingAll(16); } } diff --git a/lib/views/pages/user/gas_refill/request_gas_refill.dart b/lib/views/pages/user/gas_refill/request_gas_refill.dart index cd280fea..473e629d 100644 --- a/lib/views/pages/user/gas_refill/request_gas_refill.dart +++ b/lib/views/pages/user/gas_refill/request_gas_refill.dart @@ -184,41 +184,18 @@ class _RequestGasRefillState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Container( - width: MediaQuery.of(context).size.width, - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(context.translation.gasRefill, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - 8.height, - - /// TBD - Text( - 'Gas Request:', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - 'Cylinder Size: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.value}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - 'Request Quantity: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - 'Site: ${widget.gasRefillModel.site.name}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - ], - ).paddingAll(16), - ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + context.translation.gasRefill.heading5(context), + 8.height, + /// TBD + '${context.translation.gasRequest}:'.bodyText(context), + '${context.translation.cylinderSize}: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.value}'.bodyText(context), + '${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context), + '${context.translation.site}: ${widget.gasRefillModel.site.name}'.bodyText(context), + ], + ).paddingAll(16), 12.height, AppTimer( label: context.translation.workingHours, @@ -259,7 +236,7 @@ class _RequestGasRefillState extends State { onSaved: (value) {}, ), ], - ).paddingAll(16), + ).toShadowContainer(context).paddingAll(16), ).expanded, AppFilledButton( label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update, diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index d0fd2783..4185df62 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -9,6 +9,7 @@ import 'package:share/share.dart'; import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; +import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; @@ -87,11 +88,11 @@ class _LandPageState extends State { onWillPop: () async { bool result = await showDialog( context: context, - builder: (_) => const AAlertDialog( + builder: (_) => AAlertDialog( // title: _subtitle.exit, - title: "Exit", + title: context.translation.exit, // content: _subtitle.exitAlert, - content: "Are you sure you want to exit?", + content: context.translation.sureExit, )); if (result == true) { if (Platform.isAndroid) { @@ -129,9 +130,9 @@ class _LandPageState extends State { // ) // ), // ), - SizedBox( - height: 48 * AppStyle.getScaleFactor(context), - ), + // SizedBox( + // height: 48 * AppStyle.getScaleFactor(context), + // ), // Hero( // tag: "logo", // child: Image( @@ -150,7 +151,7 @@ class _LandPageState extends State { if (_userProvider.user != null && _userProvider.user.type == UsersTypes.normal_user) LandPageItem( // text: _subtitle.newServiceRequest, - text: "New Service Request", + text: context.translation.newServiceRequest, icon: FontAwesomeIcons.screwdriverWrench, onPressed: () { Navigator.of(context).pushNamed(CreateServiceRequestPage.id); @@ -158,7 +159,7 @@ class _LandPageState extends State { ), LandPageItem( // text: _subtitle.trackServiceRequest, - text: "Track Service Request", + text: context.translation.trackServiceRequest, icon: FontAwesomeIcons.listCheck, onPressed: () { Navigator.of(context).pushNamed(ServiceRequestsPage.id); @@ -167,7 +168,7 @@ class _LandPageState extends State { //if (_userProvider.user.type == UsersTypes.engineer) LandPageItem( // text: _subtitle.preventiveMaintenance, - text: "Preventive Maintenance", + text: context.translation.preventiveMaintenance, icon: FontAwesomeIcons.personWalking, onPressed: () { Navigator.of(context).pushNamed(RegularVisitsPage.id); @@ -183,7 +184,7 @@ class _LandPageState extends State { // ), if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.engineer) LandPageItem( - text: "Request Gas Refill", + text: context.translation.requestGasRefill, icon: FontAwesomeIcons.truckFast, onPressed: () { // Navigator.of(context).pushNamed(RequestGasRefill.id); @@ -191,21 +192,21 @@ class _LandPageState extends State { }, ), LandPageItem( - text: "Track Gas Refill", + text: context.translation.trackGasRefill, icon: Icons.content_paste_search, onPressed: () { Navigator.of(context).pushNamed(TrackGasRefillPage.id); }, ), LandPageItem( - text: "Transfer Asset", + text: context.translation.deviceTransfer, icon: FontAwesomeIcons.rightLeft, onPressed: () { Navigator.of(context).pushNamed(RequestDeviceTransfer.id); }, ), LandPageItem( - text: "Track Asset Transfer", + text: context.translation.trackAssetTransfer, icon: FontAwesomeIcons.peopleCarryBox, onPressed: () { Navigator.of(context).pushNamed(TrackDeviceTransferPage.id); @@ -223,219 +224,219 @@ class _LandPageState extends State { ), ], ), - Align( - alignment: Alignment.topLeft, - child: ABackButton( - icon: Icons.power_settings_new_rounded, - onPressed: () async { - bool result = await showDialog( - context: context, - builder: (_) => const AAlertDialog( - // title: _subtitle.signOut, - title: "Sign Out", - // content: _subtitle.signOutAlert, - content: "Are you sure you want to exit?", - )); - if (result) { - // _devicesProvider.reset(); - // _departmentsProvider.reset(); - // _serviceRequestsProvider.reset(); - // _regularVisitsProvider.reset(); - // _preventiveMaintenanceVisitsProvider.reset(); - _settingProvider.resetSettings(); - _userProvider.reset(); - Navigator.of(context).pop(); - } - }, - ), - ), - Align( - alignment: Alignment.topRight, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), - child: AIconButton( - iconData: Icons.menu, - color: AColors.primaryColor, - buttonSize: 42, - backgroundColor: AColors.white, - onPressed: () { - _scaffoldKey.currentState.openEndDrawer(); - }, - ), - ), - ), - ], - ), - ), - endDrawer: Drawer( - backgroundColor: Colors.white, - child: Column( - children: [ - 40.height, - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - const Icon(Icons.clear).onPress(() => Navigator.pop(context)), - ], - ).paddingOnly(start: 4, end: 14), - Row( - children: [ - Container( - height: 50 * AppStyle.getScaleFactor(context), - width: 50 * AppStyle.getScaleFactor(context), - padding: EdgeInsets.all(4), - decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle), - child: ClipOval( - child: ClipOval( - child: Icon( - Icons.person, - size: 36, - color: Theme.of(context).colorScheme.primary, - ), - ), - ), - ), - 12.width, - Text( - _userProvider.user?.userName ?? "??", - style: Theme.of(context).textTheme.headline6.copyWith( - fontWeight: FontWeight.w600, - ), - textScaleFactor: AppStyle.getScaleFactor(context), - ).expanded - ], - ).paddingOnly(start: 14, end: 14, top: 21, bottom: 21), - Divider( - height: 1, - thickness: 1, - color: AColors.greyEF, - ), - ListView( - children: [ - Row( - children: [ - Radio( - value: "en", - activeColor: AColors.grey3A, - focusColor: AColors.grey3A, - groupValue: _settingProvider.language, - onChanged: (value) { - _settingProvider.setLanguage(value); - }), - Text( - "English", - style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), - textScaleFactor: AppStyle.getScaleFactor(context), - ), - Radio( - value: "ar", - activeColor: AColors.grey3A, - focusColor: AColors.grey3A, - groupValue: _settingProvider.language, - onChanged: (value) { - _settingProvider.setLanguage(value); - }), - Text( - "عربي", - style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), - textScaleFactor: AppStyle.getScaleFactor(context), - ), - ], - ), - Row( - children: [ - Radio( - value: true, - activeColor: AColors.grey3A, - focusColor: AColors.grey3A, - groupValue: _settingProvider.language, - onChanged: (value) { - _settingProvider.setDarkTheme(value); - }), - Text( - "Dark", - style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), - textScaleFactor: AppStyle.getScaleFactor(context), - ), - Radio( - value: false, - activeColor: AColors.grey3A, - focusColor: AColors.grey3A, - groupValue: _settingProvider.language, - onChanged: (value) { - _settingProvider.setDarkTheme(value); - }), - Text( - "Light", - style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), - textScaleFactor: AppStyle.getScaleFactor(context), - ), - ], - ), - // DrawerItem( - // icon: Icons.notifications, - // title: _subtitle.notifications, - // onPressed: () { - // Navigator.of(context).pushNamed(NotificationsPage.id); - // }, - // ), - DrawerItem( - icon: Icons.mail, - // title: _subtitle.email, - title: "Email", - onPressed: () { - launch("mailto:customerservice@Test SA.com"); - }, - ), - // DrawerItem( - // icon: Icons.phone_in_talk, - // title: "${_subtitle.hotLine} 15564", - // onPressed: () { - // launch("tel:15564"); - // }, - // ), - // DrawerItem( - // icon: FontAwesomeIcons.linkedinIn, - // title: _subtitle.linkedIn, - // onPressed: () { - // launch("https://www.linkedin.com/company/Test SA/"); - // }, - // ), - // DrawerItem( - // icon: FontAwesomeIcons.globe, - // title: _subtitle.ourWebsite, - // onPressed: () { - // launch("https://www.Test SA.com/"); - // }, - // ), - DrawerItem( - icon: Icons.share, - // title: _subtitle.shareApp, - title: "Share App", - onPressed: () async { - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/"; - Share.share(shareLink); - }, - ), - ], - ).expanded, - Divider(height: 1, thickness: 1, color: AColors.greyEF), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - "Powered By Cloud Solutions", - style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12), - textScaleFactor: AppStyle.getScaleFactor(context), - ), - 6.width, - Image.asset("assets/images/cloud_logo.png", width: 32, height: 32) - ], - ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8), + // Align( + // alignment: Alignment.topLeft, + // child: ABackButton( + // icon: Icons.power_settings_new_rounded, + // onPressed: () async { + // bool result = await showDialog( + // context: context, + // builder: (_) => const AAlertDialog( + // // title: _subtitle.signOut, + // title: "Sign Out", + // // content: _subtitle.signOutAlert, + // content: "Are you sure you want to exit?", + // )); + // if (result) { + // // _devicesProvider.reset(); + // // _departmentsProvider.reset(); + // // _serviceRequestsProvider.reset(); + // // _regularVisitsProvider.reset(); + // // _preventiveMaintenanceVisitsProvider.reset(); + // _settingProvider.resetSettings(); + // _userProvider.reset(); + // Navigator.of(context).pop(); + // } + // }, + // ), + // ), + // Align( + // alignment: Alignment.topRight, + // child: Padding( + // padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + // child: AIconButton( + // iconData: Icons.menu, + // color: AColors.primaryColor, + // buttonSize: 42, + // backgroundColor: AColors.white, + // onPressed: () { + // _scaffoldKey.currentState.openEndDrawer(); + // }, + // ), + // ), + // ), ], ), ), + // endDrawer: Drawer( + // backgroundColor: Colors.white, + // child: Column( + // children: [ + // 40.height, + // Row( + // mainAxisAlignment: MainAxisAlignment.end, + // children: [ + // const Icon(Icons.clear).onPress(() => Navigator.pop(context)), + // ], + // ).paddingOnly(start: 4, end: 14), + // Row( + // children: [ + // Container( + // height: 50 * AppStyle.getScaleFactor(context), + // width: 50 * AppStyle.getScaleFactor(context), + // padding: EdgeInsets.all(4), + // decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle), + // child: ClipOval( + // child: ClipOval( + // child: Icon( + // Icons.person, + // size: 36, + // color: Theme.of(context).colorScheme.primary, + // ), + // ), + // ), + // ), + // 12.width, + // Text( + // _userProvider.user?.userName ?? "??", + // style: Theme.of(context).textTheme.headline6.copyWith( + // fontWeight: FontWeight.w600, + // ), + // textScaleFactor: AppStyle.getScaleFactor(context), + // ).expanded + // ], + // ).paddingOnly(start: 14, end: 14, top: 21, bottom: 21), + // Divider( + // height: 1, + // thickness: 1, + // color: AColors.greyEF, + // ), + // ListView( + // children: [ + // Row( + // children: [ + // Radio( + // value: "en", + // activeColor: AColors.grey3A, + // focusColor: AColors.grey3A, + // groupValue: _settingProvider.language, + // onChanged: (value) { + // _settingProvider.setLanguage(value); + // }), + // Text( + // "English", + // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), + // textScaleFactor: AppStyle.getScaleFactor(context), + // ), + // Radio( + // value: "ar", + // activeColor: AColors.grey3A, + // focusColor: AColors.grey3A, + // groupValue: _settingProvider.language, + // onChanged: (value) { + // _settingProvider.setLanguage(value); + // }), + // Text( + // "عربي", + // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), + // textScaleFactor: AppStyle.getScaleFactor(context), + // ), + // ], + // ), + // Row( + // children: [ + // Radio( + // value: true, + // activeColor: AColors.grey3A, + // focusColor: AColors.grey3A, + // groupValue: _settingProvider.language, + // onChanged: (value) { + // _settingProvider.setDarkTheme(value); + // }), + // Text( + // "Dark", + // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), + // textScaleFactor: AppStyle.getScaleFactor(context), + // ), + // Radio( + // value: false, + // activeColor: AColors.grey3A, + // focusColor: AColors.grey3A, + // groupValue: _settingProvider.language, + // onChanged: (value) { + // _settingProvider.setDarkTheme(value); + // }), + // Text( + // "Light", + // style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), + // textScaleFactor: AppStyle.getScaleFactor(context), + // ), + // ], + // ), + // // DrawerItem( + // // icon: Icons.notifications, + // // title: _subtitle.notifications, + // // onPressed: () { + // // Navigator.of(context).pushNamed(NotificationsPage.id); + // // }, + // // ), + // DrawerItem( + // icon: Icons.mail, + // // title: _subtitle.email, + // title: "Email", + // onPressed: () { + // launch("mailto:customerservice@Test SA.com"); + // }, + // ), + // // DrawerItem( + // // icon: Icons.phone_in_talk, + // // title: "${_subtitle.hotLine} 15564", + // // onPressed: () { + // // launch("tel:15564"); + // // }, + // // ), + // // DrawerItem( + // // icon: FontAwesomeIcons.linkedinIn, + // // title: _subtitle.linkedIn, + // // onPressed: () { + // // launch("https://www.linkedin.com/company/Test SA/"); + // // }, + // // ), + // // DrawerItem( + // // icon: FontAwesomeIcons.globe, + // // title: _subtitle.ourWebsite, + // // onPressed: () { + // // launch("https://www.Test SA.com/"); + // // }, + // // ), + // DrawerItem( + // icon: Icons.share, + // // title: _subtitle.shareApp, + // title: "Share App", + // onPressed: () async { + // PackageInfo packageInfo = await PackageInfo.fromPlatform(); + // String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/"; + // Share.share(shareLink); + // }, + // ), + // ], + // ).expanded, + // Divider(height: 1, thickness: 1, color: AColors.greyEF), + // Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // Text( + // "Powered By Cloud Solutions", + // style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12), + // textScaleFactor: AppStyle.getScaleFactor(context), + // ), + // 6.width, + // Image.asset("assets/images/cloud_logo.png", width: 32, height: 32) + // ], + // ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8), + // ], + // ), + // ), ), ); } diff --git a/lib/views/pages/user/notifications/notifications_list.dart b/lib/views/pages/user/notifications/notifications_list.dart index 8f9ea2be..95e12f6e 100644 --- a/lib/views/pages/user/notifications/notifications_list.dart +++ b/lib/views/pages/user/notifications/notifications_list.dart @@ -54,7 +54,7 @@ class NotificationsList extends StatelessWidget { }, ); }, - ), + ).toShadowContainer(context), ), ), ); diff --git a/lib/views/pages/user/requests/requests_page.dart b/lib/views/pages/user/requests/requests_page.dart index 2c110230..923d0626 100644 --- a/lib/views/pages/user/requests/requests_page.dart +++ b/lib/views/pages/user/requests/requests_page.dart @@ -43,7 +43,7 @@ class _ServiceRequestsPageState extends State with TickerPr return Scaffold( appBar: DefaultAppBar(title: context.translation.serviceRequest), - backgroundColor: const Color(0xfff8f9fb), + //backgroundColor: context.isDark? :const Color(0xfff8f9fb), body: SafeArea( child: LoadingManager( isLoading: _serviceRequestsProvider.isLoading, diff --git a/lib/views/pages/user/requests/service_request_details.dart b/lib/views/pages/user/requests/service_request_details.dart index a92e6a1c..d8252baf 100644 --- a/lib/views/pages/user/requests/service_request_details.dart +++ b/lib/views/pages/user/requests/service_request_details.dart @@ -50,171 +50,162 @@ class _ServiceRequestDetailsPageState extends State { // _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id); Widget informationCard() { - return Container( - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - StatusLabel( - label: widget.serviceRequest.priority.name, - id: widget.serviceRequest.priority.id, - textColor: AColors.getPriorityStatusTextColor(widget.serviceRequest.priority.id), - backgroundColor: AColors.getPriorityStatusColor(widget.serviceRequest.priority.id)), - 8.width, - StatusLabel( - label: widget.serviceRequest.statusLabel, - textColor: AColors.getRequestStatusTextColor(widget.serviceRequest.statusValue), - backgroundColor: AColors.getRequestStatusColor(widget.serviceRequest.statusValue)), - 1.width.expanded, - ], - ), - 8.height, - Text(widget.serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - 8.height, - Text( - '${context.translation.assetNumber}: ${widget.serviceRequest.device.assetNumber}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.requestType}: ${widget.serviceRequest.type.name}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.requestNo}: ${widget.serviceRequest.requestCode}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - if (_userProvider.user.type == UsersTypes.normal_user) - context.translation.code.toSvgAsset(width: 48).onPress(() { - Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest))); - }), - if (_userProvider.user.type == UsersTypes.engineer) 16.height, - Text(widget.serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), - ], - ) - ], - ), - 8.height, + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + StatusLabel( + label: widget.serviceRequest.priority.name, + id: widget.serviceRequest.priority.id, + textColor: AColors.getPriorityStatusTextColor(widget.serviceRequest.priority.id), + backgroundColor: AColors.getPriorityStatusColor(widget.serviceRequest.priority.id)), + 8.width, + StatusLabel( + label: widget.serviceRequest.statusLabel, + textColor: AColors.getRequestStatusTextColor(widget.serviceRequest.statusValue), + backgroundColor: AColors.getRequestStatusColor(widget.serviceRequest.statusValue)), + 1.width.expanded, + ], + ), + 8.height, + Text(widget.serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: context.isDark?AppColor.neutral30: const Color(0xFF3B3D4A))), + 8.height, + Text( + '${context.translation.assetNumber}: ${widget.serviceRequest.device.assetNumber}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + Text( + '${context.translation.requestType}: ${widget.serviceRequest.type.name}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + Text( + '${context.translation.requestNo}: ${widget.serviceRequest.requestCode}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + if (_userProvider.user.type == UsersTypes.normal_user) + context.translation.code.toSvgAsset(width: 48).onPress(() { + Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest))); + }), + if (_userProvider.user.type == UsersTypes.engineer) 16.height, + Text(widget.serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))), + ], + ) + ], + ), + 8.height, + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 8.height, + Text( + '${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + Text( + '${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + 8.height, + if ((widget.serviceRequest.callComments ?? "").isNotEmpty) ...[ const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), 8.height, Text( - '${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + widget.serviceRequest.callComments, + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), ), + ], + if (widget.serviceRequest.devicePhotos.isNotEmpty) ...[ 8.height, - if ((widget.serviceRequest.callComments ?? "").isNotEmpty) ...[ - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 8.height, - Text( - widget.serviceRequest.callComments, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - ], - if (widget.serviceRequest.devicePhotos.isNotEmpty) ...[ - 8.height, - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - FilesList(images: widget.serviceRequest.devicePhotos), - ], - if (widget.serviceRequest.audio?.isNotEmpty ?? false) ...[ - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 16.height, - ASoundPlayer(audio: widget.serviceRequest.audio), - ], + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + FilesList(images: widget.serviceRequest.devicePhotos), ], - ).paddingAll(16), - (_userProvider.user.type == UsersTypes.normal_user - ? Container( - height: 50, - padding: const EdgeInsets.only(left: 16, right: 16), - alignment: Alignment.center, - width: double.infinity, - decoration: const ShapeDecoration( - color: Color(0xFFEAF1F4), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(20), - bottomRight: Radius.circular(20), - ), + if (widget.serviceRequest.audio?.isNotEmpty ?? false) ...[ + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 16.height, + ASoundPlayer(audio: widget.serviceRequest.audio), + ], + ], + ).paddingAll(16), + (_userProvider.user.type == UsersTypes.normal_user + ? Container( + height: 50, + padding: const EdgeInsets.only(left: 16, right: 16), + alignment: Alignment.center, + width: double.infinity, + decoration: const ShapeDecoration( + color: Color(0xFFEAF1F4), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(20), + bottomRight: Radius.circular(20), ), ), - child: Row( + ), + child: Row( + children: [ + Text( + '${context.translation.viewComments}...', + style: AppTextStyles.heading6.copyWith( + color: AppColor.neutral50.withOpacity(.6), + ), + ).expanded, + SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70), + ], + ), + ) + : Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 16.height, + Row( + mainAxisSize: MainAxisSize.min, children: [ Text( - '${context.translation.viewComments}...', - style: AppTextStyles.heading6.copyWith( - color: AppColor.neutral50.withOpacity(.6), - ), - ).expanded, - SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70), + context.translation.viewComments, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) ], ), - ) - : Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 16.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewComments, - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), - ), - 4.width, - const Icon( - Icons.arrow_forward, - color: Color(0xFF4A8DB7), - size: 14, - ) - ], - ), - ], - ).paddingOnly(bottom: 16, start: 16, end: 16)) - .onPress(() async { - await showModalBottomSheet( - context: context, - useSafeArea: true, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (context) => CommentsBottomSheet(requestId: widget.serviceRequest.id), - ); - }), - ], - ), - ); + ], + ).paddingOnly(bottom: 16, start: 16, end: 16)) + .onPress(() async { + await showModalBottomSheet( + context: context, + useSafeArea: true, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (context) => CommentsBottomSheet(requestId: widget.serviceRequest.id), + ); + }), + ], + ).toShadowContainer(context); } return Scaffold( appBar: DefaultAppBar(title: context.translation.serviceDetails), - backgroundColor: const Color(0xfff8f9fb), + //backgroundColor: const Color(0xfff8f9fb), body: SafeArea( child: FutureBuilder( future: _serviceRequestsProvider.getServiceRequestObjectById(requestId: widget.serviceRequest.id), diff --git a/lib/views/pages/user/requests/work_order/work_order_details_page.dart b/lib/views/pages/user/requests/work_order/work_order_details_page.dart index b8f29067..c432fa9a 100644 --- a/lib/views/pages/user/requests/work_order/work_order_details_page.dart +++ b/lib/views/pages/user/requests/work_order/work_order_details_page.dart @@ -34,7 +34,7 @@ class WorkOrderDetailsPage extends StatelessWidget { margin: const EdgeInsets.all(16), width: double.infinity, decoration: ShapeDecoration( - color: Colors.white, + color: context.isDark?Theme.of(context).cardColor:Colors.white, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], ), @@ -44,31 +44,31 @@ class WorkOrderDetailsPage extends StatelessWidget { children: [ StatusLabel(label: workOrder.currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), 8.height, - Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))), 8.height, Text( '${context.translation.assetName}: ${workOrder.callRequest.asset.modelDefinition.assetName}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)), ), Text( '${context.translation.status}: ${workOrder.currentSituation.name}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)), ), Text( '${context.translation.orderWorkNumber}: ${workOrder.workOrderNo}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)), ), Text( '${context.translation.assignedEmployee}: ${workOrder.assignedEmployee?.name ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)), ), - Text('${context.translation.visitDate}: ${workOrder.visitDate?.toServiceRequestDetailsFormat ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.assetSN}: ${workOrder.callRequest.asset.assetSerialNo ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.assetName}: ${workOrder.callRequest.asset.modelDefinition.assetName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.assetNumber}: ${workOrder.callRequest.asset.assetNumber ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.model}: ${workOrder.callRequest.asset.modelDefinition.modelName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.site}: ${workOrder.callRequest.asset.site.custName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.callLastSituation}: ${workOrder.calllastSituation.name ?? '' ?? ""}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), + Text('${context.translation.visitDate}: ${workOrder.visitDate?.toServiceRequestDetailsFormat ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), + Text('${context.translation.assetSN}: ${workOrder.callRequest.asset.assetSerialNo ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), + Text('${context.translation.assetName}: ${workOrder.callRequest.asset.modelDefinition.assetName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), + Text('${context.translation.assetNumber}: ${workOrder.callRequest.asset.assetNumber ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), + Text('${context.translation.model}: ${workOrder.callRequest.asset.modelDefinition.modelName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), + Text('${context.translation.site}: ${workOrder.callRequest.asset.site.custName ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), + Text('${context.translation.callLastSituation}: ${workOrder.calllastSituation.name ?? '' ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))), ], ).paddingAll(16), ), diff --git a/lib/views/pages/user/requests/work_order/work_orders_list_page.dart b/lib/views/pages/user/requests/work_order/work_orders_list_page.dart index 739fd496..334f8cc9 100644 --- a/lib/views/pages/user/requests/work_order/work_orders_list_page.dart +++ b/lib/views/pages/user/requests/work_order/work_orders_list_page.dart @@ -38,7 +38,7 @@ class WorkOrderListPage extends StatelessWidget { print("serviceRequest.statusValue:${serviceRequest.statusValue}"); return Scaffold( appBar: DefaultAppBar(title: context.translation.workOrders), - backgroundColor: const Color(0xfff8f9fb), + //backgroundColor: const Color(0xfff8f9fb), body: SafeArea( child: FutureBuilder( future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode), @@ -56,86 +56,77 @@ class WorkOrderListPage extends StatelessWidget { Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; - return Container( - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), - 8.height, - Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - ], - ).expanded, - if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) - context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() { - Navigator.of(context).push( - MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])), - ); - }) - ], - ), - 8.height, - Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - '${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), - ), - Text( - '${context.translation.status}: ${workOrders[index].currentSituation.name}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), - ), - ], - ).expanded, - Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), - ], - ), - 16.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), - ), - 4.width, - const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14) - ], - ).onPress(() { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)), - ); - }), - ], - ).paddingAll(16).onPress(() { - // onPressed(request); - }), - ], - ), - ); + return Column( + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), + 8.height, + Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))), + ], + ).expanded, + if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) + context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() { + Navigator.of(context).push( + MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])), + ); + }) + ], + ), + 8.height, + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)), + ), + Text( + '${context.translation.status}: ${workOrders[index].currentSituation.name}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)), + ), + ], + ).expanded, + Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))), + ], + ), + 16.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + context.translation.viewDetails, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14) + ], + ).onPress(() { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)), + ); + }), + ], + ).paddingAll(16).onPress(() { + // onPressed(request); + }), + ], + ).toShadowContainer(context); }, ).expanded, if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)) diff --git a/lib/views/pages/user/visits/pantry/edit_pentry.dart b/lib/views/pages/user/visits/pantry/edit_pentry.dart index 38fd4aa3..013cc5f0 100644 --- a/lib/views/pages/user/visits/pantry/edit_pentry.dart +++ b/lib/views/pages/user/visits/pantry/edit_pentry.dart @@ -87,12 +87,12 @@ class _EditPentryState extends State with SingleTickerProviderStateM child: Column( children: [ Container( - decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)), + decoration: BoxDecoration(color: context.isDark?AppColor.neutral10 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)), child: TabBar( controller: _tabController, isScrollable: true, padding: EdgeInsets.zero, - labelColor: AppColor.neutral60, + labelColor: context.isDark? AppColor.neutral10 :AppColor.neutral60, unselectedLabelColor: AppColor.neutral20, indicatorPadding: const EdgeInsets.all(4), indicator: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)), diff --git a/lib/views/pages/user/visits/visit_details.dart b/lib/views/pages/user/visits/visit_details.dart index 0a3c86a3..3548258b 100644 --- a/lib/views/pages/user/visits/visit_details.dart +++ b/lib/views/pages/user/visits/visit_details.dart @@ -31,51 +31,42 @@ class VisitDetailsPage extends StatelessWidget { child: Column( children: [ SingleChildScrollView( - child: Container( - margin: const EdgeInsets.all(16), - width: double.infinity, - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - // StatusLabel( - // label: visit.priority.name, - // id: visit.priority.id, - // textColor: AColors.getPriorityStatusTextColor(visit.priority.id), - // backgroundColor: AColors.getPriorityStatusColor(visit.priority.id)), - // 8.width, - StatusLabel( - label: visit.status.name, - id: visit.status.id, - textColor: AColors.getRequestStatusTextColorByName(visit.status.name), - backgroundColor: AColors.getRequestStatusColorByName(visit.status.name), - ), - 1.width.expanded, - ], - ), - 8.height, - Text(visit.deviceEnglishName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - 8.height, - Text('${context.translation.assetNumber}: ${visit.deviceNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.assetSN}: ${visit.deviceSerialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.code}: ${visit.serialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - const Divider().defaultStyle(context), - Text('${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - const Divider().defaultStyle(context), - Text('${context.translation.assignedTo}: ${visit.assignTo}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.engineerName}: ${visit.employName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - Text('${context.translation.site}: ${visit.hospitalName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), - ], - ).paddingAll(16), - ), + child: Column( + //mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + // StatusLabel( + // label: visit.priority.name, + // id: visit.priority.id, + // textColor: AColors.getPriorityStatusTextColor(visit.priority.id), + // backgroundColor: AColors.getPriorityStatusColor(visit.priority.id)), + // 8.width, + StatusLabel( + label: visit.status.name, + id: visit.status.id, + textColor: AColors.getRequestStatusTextColorByName(visit.status.name), + backgroundColor: AColors.getRequestStatusColorByName(visit.status.name), + ), + 1.width.expanded, + ], + ), + 8.height, + visit.deviceEnglishName.heading5(context), + 8.height, + '${context.translation.assetNumber}: ${visit.deviceNumber}'.bodyText(context), + '${context.translation.assetSN}: ${visit.deviceSerialNumber}'.bodyText(context), + '${context.translation.code}: ${visit.serialNumber}'.bodyText(context), + const Divider().defaultStyle(context), + '${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}'.bodyText(context), + '${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}'.bodyText(context), + const Divider().defaultStyle(context), + '${context.translation.assignedTo}: ${visit.assignTo}'.bodyText(context), + '${context.translation.engineerName}: ${visit.employName}'.bodyText(context), + '${context.translation.site}: ${visit.hospitalName}'.bodyText(context), + ], + ).toShadowContainer(context).paddingAll(16), ).expanded, if (userProvider.user.type == UsersTypes.engineer && visit.status.id != 270) AppFilledButton( diff --git a/lib/views/widgets/date_and_time/date_picker.dart b/lib/views/widgets/date_and_time/date_picker.dart index 4700d96f..a460140d 100644 --- a/lib/views/widgets/date_and_time/date_picker.dart +++ b/lib/views/widgets/date_and_time/date_picker.dart @@ -19,7 +19,7 @@ class ADatePicker extends StatelessWidget { Widget build(BuildContext context) { return Container( decoration: BoxDecoration( - color: Colors.white, + color: context.isDark?AppColor.neutral50:Colors.white, borderRadius: BorderRadius.circular(10), border: Border.all(width: 1, color: Theme.of(context).scaffoldBackgroundColor), boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index 3fd77498..6785910c 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -4,6 +4,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; import '../../../extensions/text_extensions.dart'; @@ -22,15 +23,10 @@ class DeviceTransferItem extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Text(context.translation.deviceTransferRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - Text( - '${context.translation.from} : ${item.senderAssignedEmployeeName}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.to} : ${item.receiverAssignedEmployeeName}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), + context.translation.deviceTransferRequest.heading5(context), + + '${context.translation.from} : ${item.senderAssignedEmployeeName}'.bodyText(context), + '${context.translation.to} : ${item.receiverAssignedEmployeeName}'.bodyText(context), 8.height, Row( mainAxisSize: MainAxisSize.min, @@ -63,7 +59,7 @@ class DeviceTransferItem extends StatelessWidget { /// TBD //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), 1.width, - Text(item.createdOn != null ? item.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + Text(item.createdOn != null ? item.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark? AppColor.neutral10 : const Color(0xFF3B3D4A))), ], ), ], diff --git a/lib/views/widgets/e_signature/e_signature.dart b/lib/views/widgets/e_signature/e_signature.dart index 6aa8ca6a..7974e81d 100644 --- a/lib/views/widgets/e_signature/e_signature.dart +++ b/lib/views/widgets/e_signature/e_signature.dart @@ -1,6 +1,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:signature/signature.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/extensions/widget_extensions.dart'; @@ -57,7 +58,7 @@ class _ESignatureState extends State { width: MediaQuery.of(context).size.width, padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), decoration: BoxDecoration( - color: Colors.white, + color: context.isDark?Theme.of(context).cardColor:Colors.white, borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10), boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], ), diff --git a/lib/views/widgets/equipment/asset_detail_page.dart b/lib/views/widgets/equipment/asset_detail_page.dart index 77c7a43d..e1219f1c 100644 --- a/lib/views/widgets/equipment/asset_detail_page.dart +++ b/lib/views/widgets/equipment/asset_detail_page.dart @@ -13,6 +13,8 @@ import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import '../../../new_views/app_style/app_color.dart'; + class AssetDetailPage extends StatefulWidget { static const String id = "/asset-details"; @@ -62,111 +64,94 @@ class _AssetDetailPageState extends State { if (snapshot.hasData) { return SingleChildScrollView( padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(16), - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AspectRatio( + aspectRatio: 159 / 94, + child: Container( + width: 95, + height: 95, + decoration: ShapeDecoration( + color: const Color(0xFFEAF1F4), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + image: DecorationImage( + fit: BoxFit.cover, + image: NetworkImage( + _assetProvider.assetById?.assetPhoto != null ? URLs.getFileUrl(_assetProvider.assetById.assetPhoto) : "https://www.lasteelcraft.com/images/no-image-available.png"), + )), + ), ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - AspectRatio( - aspectRatio: 159 / 94, - child: Container( - width: 95, - height: 95, - decoration: ShapeDecoration( - color: const Color(0xFFEAF1F4), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), - ), - image: DecorationImage( - fit: BoxFit.cover, - image: NetworkImage( - _assetProvider.assetById?.assetPhoto != null ? URLs.getFileUrl(_assetProvider.assetById.assetPhoto) : "https://www.lasteelcraft.com/images/no-image-available.png"), - )), + 6.height, + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + _assetProvider.assetById?.modelDefinition?.assetName ?? "-".heading5(context), ), - ), - 6.height, - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - _assetProvider.assetById?.modelDefinition?.assetName ?? "-", - style: AppTextStyles.heading5.copyWith(color: Color(0xFF3B3D4A)), - ), - 8.height, - Text( - "${context.translation.assetNumber}: ${_assetProvider.assetById.multiAssets.first.assetNumber}", - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "${context.translation.model}: ${_assetProvider.assetById.modelDefinition.modelDefCode}", - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "${context.translation.serialNo}: ${_assetProvider.assetById.multiAssets.first.assetSerialNo}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "MD: ${_assetProvider.assetById.department.departmentName ?? "-"}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "Supplier: ${_assetProvider.assetById.supplier?.suppliername ?? "-"}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "Manufacturer: ${_assetProvider.assetById.modelDefinition.manufacturerName}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "Location: ${_assetProvider.assetById.site.custName}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), + 8.height, + "${context.translation.assetNumber}: ${_assetProvider.assetById.multiAssets.first.assetNumber}".bodyText(context), + "${context.translation.model}: ${_assetProvider.assetById.modelDefinition.modelDefCode}".bodyText(context), + Text( + "${context.translation.serialNo}: ${_assetProvider.assetById.multiAssets.first.assetSerialNo}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10:Color(0xFF757575)), + ), + Text( + "MD: ${_assetProvider.assetById.department.departmentName ?? "-"}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + Text( + "Supplier: ${_assetProvider.assetById.supplier?.suppliername ?? "-"}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + Text( + "Manufacturer: ${_assetProvider.assetById.modelDefinition.manufacturerName}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + Text( + "Location: ${_assetProvider.assetById.site.custName}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + 8.height, + const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), + 8.height, + Text( + "Installation Date: ${_assetProvider.assetById.installationDate ?? "-"}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + Text( + "Next PM Date: ${_assetProvider.assetById.installationDate ?? "-"}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + Text( + "Last PM Date: ${_assetProvider.assetById.installationDate ?? "-"}", + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), + ), + if ((_assetProvider.assetById.modelDefinition.assetDescription ?? "").isNotEmpty) ...[ 8.height, const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), 8.height, Text( - "Installation Date: ${_assetProvider.assetById.installationDate ?? "-"}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "Next PM Date: ${_assetProvider.assetById.installationDate ?? "-"}", + _assetProvider.assetById.modelDefinition.assetDescription ?? "-", maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)), ), - Text( - "Last PM Date: ${_assetProvider.assetById.installationDate ?? "-"}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - if ((_assetProvider.assetById.modelDefinition.assetDescription ?? "").isNotEmpty) ...[ - 8.height, - const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), - 8.height, - Text( - _assetProvider.assetById.modelDefinition.assetDescription ?? "-", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - ] - ], - ) - ], - ), - ), + ] + ], + ) + ], + ).toShadowContainer(context), ); } return Center(child: ALoading()); diff --git a/lib/views/widgets/equipment/asset_item_gridview.dart b/lib/views/widgets/equipment/asset_item_gridview.dart index 08df7853..ee3cca65 100644 --- a/lib/views/widgets/equipment/asset_item_gridview.dart +++ b/lib/views/widgets/equipment/asset_item_gridview.dart @@ -5,6 +5,7 @@ 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/device/asset.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; class AssetItemGridView extends StatelessWidget { final Asset device; @@ -14,84 +15,68 @@ class AssetItemGridView extends StatelessWidget { @override Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.all(16), - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), + return Column( + children: [ + AspectRatio( + aspectRatio: 159 / 94, + child: Container( + width: 95, + height: 95, + decoration: ShapeDecoration( + color: const Color(0xFFEAF1F4), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + image: DecorationImage( + fit: BoxFit.cover, + image: NetworkImage(device.assetPhoto != null ? URLs.getFileUrl(device.assetPhoto) : "https://www.lasteelcraft.com/images/no-image-available.png"), + )), + ), ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - children: [ - AspectRatio( - aspectRatio: 159 / 94, - child: Container( - width: 95, - height: 95, - decoration: ShapeDecoration( - color: const Color(0xFFEAF1F4), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), - ), - image: DecorationImage( - fit: BoxFit.cover, - image: NetworkImage(device.assetPhoto != null ? URLs.getFileUrl(device.assetPhoto) : "https://www.lasteelcraft.com/images/no-image-available.png"), - )), + 6.height, + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + device.modelDefinition.assetName, + maxLines: 2, + style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral30: Color(0xFF3B3D4A)), ), - ), - 6.height, - Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - device.modelDefinition.assetName, - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF3B3D4A)), - ), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - "${context.translation.assetNumber} : ${device.assetNumber}", - style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)), - ), - Text( - "${context.translation.model} : ${device.modelDefinition.modelDefCode}", - style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + "${context.translation.assetNumber} : ${device.assetNumber}".bodyText2(context), + "${context.translation.model} : ${device.modelDefinition.modelDefCode}".bodyText2(context), + Text( + "${context.translation.serialNo} : ${device.assetSerialNo}", + maxLines: 2, + overflow: TextOverflow.fade, + style: AppTextStyles.bodyText2.copyWith( + color: context.isDark? AppColor.neutral10: Color(0xFF757575), ), - Text( - "${context.translation.serialNo} : ${device.assetSerialNo}", - maxLines: 2, - overflow: TextOverflow.fade, - style: AppTextStyles.bodyText2.copyWith( - color: Color(0xFF757575), - ), - ), - ], - ), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - 'View Details', - style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)), - ), - 4.width, - const Icon( - Icons.arrow_forward, - color: Color(0xFF4A8DB7), - size: 14, - ) - ], - ), - ], - ).expanded - ], - ), - ).onPress(() => onPressed(device)); + ), + ], + ), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'View Details', + style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) + ], + ), + ], + ).expanded + ], + ).onPress(() => onPressed(device)).toShadowContainer(context); } } diff --git a/lib/views/widgets/equipment/asset_item_listview.dart b/lib/views/widgets/equipment/asset_item_listview.dart index 4023e0d7..6fd6890e 100644 --- a/lib/views/widgets/equipment/asset_item_listview.dart +++ b/lib/views/widgets/equipment/asset_item_listview.dart @@ -38,29 +38,15 @@ class AssetItemListView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - Text( - device.modelDefinition.assetName, - maxLines: 2, - style: AppTextStyles.heading5.copyWith(color: Color(0xFF3B3D4A)), - ), - Text( - "${context.translation.assetNumber} : ${device.assetNumber}", - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - "${context.translation.model} : ${device.modelDefinition.modelDefCode}", - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), + device.modelDefinition.assetName.heading5(context), + "${context.translation.assetNumber} : ${device.assetNumber}".bodyText(context), + "${context.translation.model} : ${device.modelDefinition.modelDefCode}".bodyText(context), ], ), Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text( - "${context.translation.serialNo} : ${device.assetSerialNo}", - maxLines: 2, - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ).expanded, + "${context.translation.serialNo} : ${device.assetSerialNo}".bodyText(context).expanded, Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 8af6baf8..4e2c3a57 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -91,7 +91,7 @@ class _SingleDevicePickerState extends State { padding: const EdgeInsets.only(left: 16, right: 8), alignment: Alignment.center, decoration: ShapeDecoration( - color: Color(0xFFEAF1F4), + color: context.isDark?Color(0xFF3B3D4A): Color(0xFFEAF1F4), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), diff --git a/lib/views/widgets/gas_refill/gas_refill_item.dart b/lib/views/widgets/gas_refill/gas_refill_item.dart index f4392fc9..47b0261a 100644 --- a/lib/views/widgets/gas_refill/gas_refill_item.dart +++ b/lib/views/widgets/gas_refill/gas_refill_item.dart @@ -6,6 +6,7 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import '../../../extensions/text_extensions.dart'; import '../../../models/new_models/gas_refill_model.dart'; +import '../../../new_views/app_style/app_color.dart'; import '../../app_style/colors.dart'; import '../requests/request_status.dart'; @@ -33,19 +34,13 @@ class GasRefillItem extends StatelessWidget { // 8.width, StatusLabel(label: item.status.name, textColor: AColors.getRequestStatusTextColor(item.status.value), backgroundColor: AColors.getRequestStatusColor(item.status.value)), 1.width.expanded, - Text(item.startDate != null ? item.startDate.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + Text(item.startDate != null ? item.startDate.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral10 :const Color(0xFF3B3D4A))), ], ), 8.height, - Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - Text( - '${context.translation.gasType}: ${item.gazRefillDetails[0].gasType.name}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.site}: ${item.site.name}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), + context.translation.gasRefillRequest.heading5(context), + '${context.translation.gasType}: ${item.gazRefillDetails[0].gasType.name}'.bodyText(context), + '${context.translation.site}: ${item.site.name}'.bodyText(context), 8.height, Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/views/widgets/land_page/land_page_item.dart b/lib/views/widgets/land_page/land_page_item.dart index 10b7ff05..2af0b610 100644 --- a/lib/views/widgets/land_page/land_page_item.dart +++ b/lib/views/widgets/land_page/land_page_item.dart @@ -1,8 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; +import '../../../new_views/app_style/app_color.dart'; + class LandPageItem extends StatelessWidget { final String text; final IconData icon; @@ -14,40 +18,26 @@ class LandPageItem extends StatelessWidget { Widget build(BuildContext context) { return InkWell( onTap: onPressed, - child: Container( - padding: const EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(15), - boxShadow: [ - BoxShadow( - color: const Color(0xff000000).withOpacity(.15), - blurRadius: 26, - offset: const Offset(0, -3), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (icon != null) + Icon( + icon, + color: AColors.primaryColor, + size: 42 * AppStyle.getScaleFactor(context), + ), + if (svgPath != null) + SvgPicture.asset( + svgPath, + width: 42 * AppStyle.getScaleFactor(context), + height: 42 * AppStyle.getScaleFactor(context), + color: AColors.primaryColor, ), - ], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - if (icon != null) - Icon( - icon, - color: AColors.primaryColor, - size: 42 * AppStyle.getScaleFactor(context), - ), - if (svgPath != null) - SvgPicture.asset( - svgPath, - width: 42 * AppStyle.getScaleFactor(context), - height: 42 * AppStyle.getScaleFactor(context), - color: AColors.primaryColor, - ), - Text(text, style: const TextStyle(color: AColors.grey3A)), - ], - ), - ), + Text(text, style: TextStyle(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,)), + ], + ).toShadowContainer(context), ); } } diff --git a/lib/views/widgets/notifications/notification_item.dart b/lib/views/widgets/notifications/notification_item.dart index 8940ee13..69254ee7 100644 --- a/lib/views/widgets/notifications/notification_item.dart +++ b/lib/views/widgets/notifications/notification_item.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; @@ -22,19 +23,19 @@ class NotificationItem extends StatelessWidget { children: [ Text( notification.title ?? "", - style: AppTextStyles.heading6.copyWith(color: AppColor.neutral50), + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,), ).expanded, 8.width, Text( notification.createdOn.toServiceRequestCardFormat ?? "", textAlign: TextAlign.right, - style: AppTextStyles.tinyFont.copyWith(color: AppColor.neutral50), + style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral20 : AppColor.neutral50,), ), ], ), Text( notification.text ?? "", - style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)), + style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575),), ), ], ).onPress(() { @@ -42,3 +43,4 @@ class NotificationItem extends StatelessWidget { }); } } + diff --git a/lib/views/widgets/requests/service_request_item.dart b/lib/views/widgets/requests/service_request_item.dart index 1dcd3e53..ae4fe61e 100644 --- a/lib/views/widgets/requests/service_request_item.dart +++ b/lib/views/widgets/requests/service_request_item.dart @@ -16,6 +16,8 @@ import 'package:test_sa/models/user.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; +import '../../../new_views/app_style/app_color.dart'; + class ServiceRequestItem extends StatelessWidget { final int index; final ServiceRequest request; @@ -31,74 +33,65 @@ class ServiceRequestItem extends StatelessWidget { Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; - return Container( - decoration: ShapeDecoration( - color: Colors.white, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), - ), - shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], - ), - child: Column( - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - StatusLabel( - label: request.priority.name, - id: request.priority.id, - textColor: AColors.getPriorityStatusTextColor(request.priority.id), - backgroundColor: AColors.getPriorityStatusColor(request.priority.id)), - 8.width, - StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)), - 1.width.expanded, - Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), - ], - ), - 8.height, - Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), - Text( - '${context.translation.assetName}: ${request.deviceEnName}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.assetNumber}: ${request.device.assetNumber}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.requestType}: ${request.type.name}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - Text( - '${context.translation.requestNo}: ${request.requestCode}', - style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), - ), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), - ), - 4.width, - const Icon( - Icons.arrow_forward, - color: Color(0xFF4A8DB7), - size: 14, - ) - ], - ), - ], - ).paddingAll(16).onPress(() { - onPressed(request); - }), - ], - ), + return Column( + children: [ + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + StatusLabel( + label: request.priority.name, + id: request.priority.id, + textColor: AColors.getPriorityStatusTextColor(request.priority.id), + backgroundColor: AColors.getPriorityStatusColor(request.priority.id)), + 8.width, + StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)), + 1.width.expanded, + Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark? AppColor.neutral30:const Color(0xFF3B3D4A))), + ], + ), + 8.height, + Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: context.isDark? AppColor.neutral30:const Color(0xFF3B3D4A))), + Text( + '${context.translation.assetName}: ${request.deviceEnName}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + Text( + '${context.translation.assetNumber}: ${request.device.assetNumber}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + Text( + '${context.translation.requestType}: ${request.type.name}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + Text( + '${context.translation.requestNo}: ${request.requestCode}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)), + ), + 8.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + context.translation.viewDetails, + style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), + ), + 4.width, + const Icon( + Icons.arrow_forward, + color: Color(0xFF4A8DB7), + size: 14, + ) + ], + ), + ], + ).paddingAll(16).onPress(() { + onPressed(request); + }).toShadowContainer(context), + ], ); } } diff --git a/lib/views/widgets/timer/app_timer.dart b/lib/views/widgets/timer/app_timer.dart index d5f71172..04a7bc16 100644 --- a/lib/views/widgets/timer/app_timer.dart +++ b/lib/views/widgets/timer/app_timer.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:flutter/material.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/extensions/widget_extensions.dart'; @@ -107,7 +108,7 @@ class _AppTimerState extends State { height: 56.toScreenHeight, padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), decoration: BoxDecoration( - color: Theme.of(context).cardColor, + color: context.isDark?AppColor.neutral50:Theme.of(context).cardColor, borderRadius: BorderRadius.circular(10), boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], ), diff --git a/lib/views/widgets/visits/visit_item.dart b/lib/views/widgets/visits/visit_item.dart index 97b8a61a..260d849e 100644 --- a/lib/views/widgets/visits/visit_item.dart +++ b/lib/views/widgets/visits/visit_item.dart @@ -46,20 +46,11 @@ class VisitItem extends StatelessWidget { ], ), 8.height, - Text(visit.deviceEnglishName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), + visit.deviceEnglishName.heading5(context), 8.height, - Text( - '${context.translation.assetNumber}: ${visit.deviceNumber}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), - ), - Text( - '${context.translation.assetSN}: ${visit.deviceSerialNumber}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), - ), - Text( - '${context.translation.code}: ${visit.serialNumber}', - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), - ), + '${context.translation.assetNumber}: ${visit.deviceNumber}'.bodyText(context), + '${context.translation.assetSN}: ${visit.deviceSerialNumber}'.bodyText(context), + '${context.translation.code}: ${visit.serialNumber}'.bodyText(context), 16.height, Row( mainAxisSize: MainAxisSize.min, diff --git a/lib/views/widgets/visits/visits_list.dart b/lib/views/widgets/visits/visits_list.dart index 5fe65349..93331400 100644 --- a/lib/views/widgets/visits/visits_list.dart +++ b/lib/views/widgets/visits/visits_list.dart @@ -42,11 +42,14 @@ class _VisitsListState extends State { onLazyLoad: widget.onLazyLoad, child: ListView.builder( itemCount: widget.visits.length, - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), itemBuilder: (context, itemIndex) { Visit visit = widget.visits[itemIndex]; // bool isSelected = _selectedVisits.contains(visit); - return VisitItem(visit: visit); + return Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: VisitItem(visit: visit), + ); }, ), ),