Merge remote-tracking branch 'origin/main_design2.0' into main_design2.0

# Conflicts:
#	lib/l10n/app_en.arb
#	lib/new_views/pages/land_page/dashboard_fragments/requests_fragment.dart
design_3.0_demo_module
Sikander Saleem 2 years ago
commit 3725adb0aa

@ -13,6 +13,7 @@ class AllRequestsProvider extends ChangeNotifier {
bool isCloseLoading = false; bool isCloseLoading = false;
bool isOverdueLoading = false; bool isOverdueLoading = false;
bool isHighPriorityLoading = false; bool isHighPriorityLoading = false;
bool isCalendarLoading = false;
int stateCode; int stateCode;
@ -22,6 +23,7 @@ class AllRequestsProvider extends ChangeNotifier {
AllRequestsAndCount closeRequests; AllRequestsAndCount closeRequests;
AllRequestsAndCount overdueRequests; AllRequestsAndCount overdueRequests;
AllRequestsAndCount highPriorityRequests; AllRequestsAndCount highPriorityRequests;
AllRequestsAndCount calendarRequests;
void getRequests() { void getRequests() {
getHighPriorityRequests(); getHighPriorityRequests();
@ -61,6 +63,38 @@ class AllRequestsProvider extends ChangeNotifier {
} }
} }
Future<int> getCalenderRequests({@required DateTime from, DateTime to}) async {
if (isCalendarLoading == true) return -2;
isCalendarLoading = true;
if (isCalendarLoading == null) notifyListeners();
Response response;
try {
Map<String, dynamic> 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<int> getHighPriorityRequests() async { Future<int> getHighPriorityRequests() async {
if (isHighPriorityLoading == true) return -2; if (isHighPriorityLoading == true) return -2;
isHighPriorityLoading = true; isHighPriorityLoading = true;

@ -68,5 +68,5 @@ extension WidgetExtensions on Widget {
} }
extension DividerExtension on Divider { 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);
} }

@ -307,7 +307,7 @@
"updateWorkOrder" : "تعديل طلب العمل", "updateWorkOrder" : "تعديل طلب العمل",
"createPreventiveMaintenanceRequest" : "إنشاء طلب صيانة وقائية", "createPreventiveMaintenanceRequest" : "إنشاء طلب صيانة وقائية",
"createNewRequest" : "إنشاء طلب جديد", "createNewRequest" : "إنشاء طلب جديد",
"calendar" : "التقويم", "calender" : "التقويم",
"helpCenter" : "مركز المساعدة", "helpCenter" : "مركز المساعدة",
"rateUs": "قيمنا", "rateUs": "قيمنا",
"settings" : " الاعدادات", "settings" : " الاعدادات",
@ -349,7 +349,17 @@
"addItem" : "اضافة عنصر", "addItem" : "اضافة عنصر",
"item" : "عنصر", "item" : "عنصر",
"serialNo" : "رقم التسلسلي", "serialNo" : "رقم التسلسلي",
"measuredValue": "القيمة المقاسه" "measuredValue": "القيمة المقاسه",
"sureExit" : " هل انت متاكد من الخروج؟",
"daily" : "يومي",
"weekly" : "اسبوعي",
"monthly" : "شهري",
"myShift" : "ورديتي",
"myTeamRequest" : "طلب فريقي",
"sunToThurs": "الاحد الى الخميس",
"requestGasRefill" : "طلب اعادة تعبئة غاز",
"trackGasRefill" : "تتبع طلبات اعادة تعبئة غاز",
"trackAssetTransfer" : "تتبع نقل اجهزة",
"total" : "مجموع"
} }

@ -349,5 +349,16 @@
"addItem" : "Add Item", "addItem" : "Add Item",
"item" : "Item", "item" : "Item",
"measuredValue": "Measured Value", "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"
} }

@ -10,44 +10,44 @@ class AllRequestsAndCount {
AllRequestsAndCount({this.countServiceRequest, this.countGasRefill, this.countAssetTransfer, this.countPPM, this.detailsStatusTotal, this.total, this.requestsDetails}); AllRequestsAndCount({this.countServiceRequest, this.countGasRefill, this.countAssetTransfer, this.countPPM, this.detailsStatusTotal, this.total, this.requestsDetails});
AllRequestsAndCount.fromJson(Map<String, dynamic> json) { AllRequestsAndCount.fromJson(Map<String, dynamic> json) {
countServiceRequest = json['countServiceRequest'] != null ? new CountServiceRequest.fromJson(json['countServiceRequest']) : null; countServiceRequest = json['countServiceRequest'] != null ? CountServiceRequest.fromJson(json['countServiceRequest']) : null;
countGasRefill = json['countGasRefill'] != null ? new CountServiceRequest.fromJson(json['countGasRefill']) : null; countGasRefill = json['countGasRefill'] != null ? CountServiceRequest.fromJson(json['countGasRefill']) : null;
countAssetTransfer = json['countAssetTransfer'] != null ? new CountServiceRequest.fromJson(json['countAssetTransfer']) : null; countAssetTransfer = json['countAssetTransfer'] != null ? CountServiceRequest.fromJson(json['countAssetTransfer']) : null;
countPPM = json['countPPM'] != null ? new CountServiceRequest.fromJson(json['countPPM']) : null; countPPM = json['countPPM'] != null ? CountServiceRequest.fromJson(json['countPPM']) : null;
detailsStatusTotal = json['detailsStatusTotal'] != null ? new DetailsStatusTotal.fromJson(json['detailsStatusTotal']) : null; detailsStatusTotal = json['detailsStatusTotal'] != null ? DetailsStatusTotal.fromJson(json['detailsStatusTotal']) : null;
total = json['total'] != null ? new CountServiceRequest.fromJson(json['total']) : null; total = json['total'] != null ? CountServiceRequest.fromJson(json['total']) : null;
if (json['requestsDetails'] != null) { if (json['requestsDetails'] != null) {
requestsDetails = <RequestsDetails>[]; requestsDetails = <RequestsDetails>[];
json['requestsDetails'].forEach((v) { json['requestsDetails'].forEach((v) {
requestsDetails.add(new RequestsDetails.fromJson(v)); requestsDetails.add(RequestsDetails.fromJson(v));
}); });
} }
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
if (this.countServiceRequest != null) { if (countServiceRequest != null) {
data['countServiceRequest'] = this.countServiceRequest.toJson(); data['countServiceRequest'] = countServiceRequest.toJson();
} }
if (this.countGasRefill != null) { if (countGasRefill != null) {
data['countGasRefill'] = this.countGasRefill.toJson(); data['countGasRefill'] = countGasRefill.toJson();
} }
if (this.countAssetTransfer != null) { if (countAssetTransfer != null) {
data['countAssetTransfer'] = this.countAssetTransfer.toJson(); data['countAssetTransfer'] = countAssetTransfer.toJson();
} }
if (this.countPPM != null) { if (countPPM != null) {
data['countPPM'] = this.countPPM.toJson(); data['countPPM'] = countPPM.toJson();
} }
if (this.detailsStatusTotal != null) { if (detailsStatusTotal != null) {
data['detailsStatusTotal'] = this.detailsStatusTotal.toJson(); data['detailsStatusTotal'] = detailsStatusTotal.toJson();
} }
if (this.total != null) { if (total != null) {
data['total'] = this.total.toJson(); data['total'] = total.toJson();
} }
if (this.requestsDetails != null) { if (requestsDetails != null) {
data['requestsDetails'] = this.requestsDetails.map((v) => v.toJson()).toList(); data['requestsDetails'] = requestsDetails.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
@ -63,8 +63,8 @@ class CountServiceRequest {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
data['count'] = this.count; data['count'] = count;
return data; return data;
} }
} }
@ -83,10 +83,10 @@ class DetailsStatusTotal {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
data['open'] = this.open; data['open'] = open;
data['inProgress'] = this.inProgress; data['inProgress'] = inProgress;
data['closed'] = this.closed; data['closed'] = closed;
return data; return data;
} }
} }
@ -156,26 +156,26 @@ class RequestsDetails {
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = this.id; data['id'] = id;
data['nameOfType'] = this.nameOfType; data['nameOfType'] = nameOfType;
data['priority'] = this.priority; data['priority'] = priority;
data['status'] = this.status; data['status'] = status;
data['assetName'] = this.assetName; data['assetName'] = assetName;
data['assetNo'] = this.assetNo; data['assetNo'] = assetNo;
data['assetSN'] = this.assetSN; data['assetSN'] = assetSN;
data['model'] = this.model; data['model'] = model;
data['supplier'] = this.supplier; data['supplier'] = supplier;
data['manufacturer'] = this.manufacturer; data['manufacturer'] = manufacturer;
data['requestType'] = this.requestType; data['requestType'] = requestType;
data['requestNo'] = this.requestNo; data['requestNo'] = requestNo;
data['gasType'] = this.gasType; data['gasType'] = gasType;
data['site'] = this.site; data['site'] = site;
data['statusReceiver'] = this.statusReceiver; data['statusReceiver'] = statusReceiver;
data['assetTransferFrom'] = this.assetTransferFrom; data['assetTransferFrom'] = assetTransferFrom;
data['assetTransferTo'] = this.assetTransferTo; data['assetTransferTo'] = assetTransferTo;
data['code'] = this.code; data['code'] = code;
data['date'] = this.date; data['date'] = date;
return data; return data;
} }
} }

@ -68,20 +68,20 @@ class AppDrawer extends StatelessWidget {
// "logout" : "خروج" // "logout" : "خروج"
padding: const EdgeInsets.only(top: 24), padding: const EdgeInsets.only(top: 24),
children: [ 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, 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, 18.height,
drawerItem("rate_us", context.translation.rateUs), drawerItem("rate_us", context.translation.rateUs, context),
18.height, 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, 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, 18.height,
drawerItem("whats_new", context.translation.whatsNew), drawerItem("whats_new", context.translation.whatsNew, context),
], ],
).expanded, ).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( bool result = await showDialog(
context: context, context: context,
builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert), builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert),
@ -101,7 +101,7 @@ class AppDrawer extends StatelessWidget {
children: [ children: [
Text( Text(
"Powered By Cloud Solutions", "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), textScaleFactor: AppStyle.getScaleFactor(context),
), ),
6.width, 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( return Row(
children: [ children: [
SvgPicture.asset( SvgPicture.asset(
@ -125,7 +125,7 @@ class AppDrawer extends StatelessWidget {
16.width, 16.width,
Text( Text(
title, title,
style: AppTextStyles.heading6.copyWith(color: color ?? const Color(0xFF3B3D4A)), style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50,),
), ),
], ],
); );

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; 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/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
@ -38,31 +39,31 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"My Shift".heading5(context), context.translation.myShift.heading5(context),
8.height, 8.height,
"Sunday to Thursday".bodyText(context), context.translation.sunToThurs.bodyText(context),
"09:00 to 18:00".bodyText(context).custom(color: AppColor.neutral50), "09:00 to 18:00".bodyText(context).custom(color: context.isDark? AppColor.neutral10: AppColor.neutral50),
], ],
).toShadowContainer(context), ).toShadowContainer(context),
).paddingOnly(start: 16, end: 16), ).paddingOnly(start: 16, end: 16),
16.height, 16.height,
Container( Container(
margin: const EdgeInsets.only(left: 16, right: 16), 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( child: TabBar(
controller: _tabController, controller: _tabController,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
labelColor: AppColor.neutral60, labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20, unselectedLabelColor: AppColor.neutral20,
indicatorPadding: const EdgeInsets.all(4), 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) { onTap: (index) {
setState(() {}); setState(() {});
}, },
tabs: [ tabs: [
Tab(text: "Monthly", height: 57.toScreenHeight), Tab(text: context.translation.monthly, height: 57.toScreenHeight),
Tab(text: "Weekly", height: 57.toScreenHeight), Tab(text: context.translation.weekly, height: 57.toScreenHeight),
Tab(text: "Daily", height: 57.toScreenHeight), Tab(text: context.translation.daily, height: 57.toScreenHeight),
], ],
), ),
), ),

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.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/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
@ -19,9 +20,9 @@ class CalendarHeader extends StatelessWidget {
children: [ children: [
dateFormat.format(dateTime).heading5(context), dateFormat.format(dateTime).heading5(context),
6.width, 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 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, 8.height,

@ -6,16 +6,13 @@ import '../../../app_style/app_color.dart';
class CalendarDaysCard extends StatelessWidget { class CalendarDaysCard extends StatelessWidget {
final String day; 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final bgColor = day == "1" ? AppColor.neutral30 : (day == "2" ? AppColor.primary40 : AppColor.green50).withOpacity(0.3); final bgColor = fill ? AppColor.primary40.withOpacity(0.3) : AppColor.neutral30;
final dotColor = (day == "1" final dotColor = fill ? AppColor.primary40 : AppColor.green50;
? Colors.transparent
: day == "2"
? AppColor.primary40
: AppColor.green50);
return SizedBox( return SizedBox(
height: 45.toScreenWidth, height: 45.toScreenWidth,
width: 45.toScreenWidth, width: 45.toScreenWidth,
@ -28,6 +25,7 @@ class CalendarDaysCard extends StatelessWidget {
decoration: BoxDecoration(shape: BoxShape.circle, color: bgColor), decoration: BoxDecoration(shape: BoxShape.circle, color: bgColor),
child: day.bodyText(context).custom(color: AppColor.neutral50), child: day.bodyText(context).custom(color: AppColor.neutral50),
), ),
if (fill)
PositionedDirectional( PositionedDirectional(
bottom: 16.toScreenHeight, bottom: 16.toScreenHeight,
end: 16.toScreenWidth, end: 16.toScreenWidth,

@ -1,5 +1,16 @@
import 'package:flutter/material.dart'; 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/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 { class DailyFragment extends StatefulWidget {
const DailyFragment({Key key}) : super(key: key); const DailyFragment({Key key}) : super(key: key);
@ -11,11 +22,10 @@ class DailyFragment extends StatefulWidget {
} }
class _DailyFragmentState extends State<DailyFragment> { class _DailyFragmentState extends State<DailyFragment> {
DateTime currentDateTime = DateTime.now();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(from: DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day));
} }
@override @override
@ -26,9 +36,46 @@ class _DailyFragmentState extends State<DailyFragment> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Consumer<AllRequestsProvider>(builder: (context, snapshot, _) {
children: ["Daily".heading5(context)], 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);
} }

@ -1,9 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.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/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import '../../../../controllers/providers/api/all_requests_provider.dart';
import '../../../../extensions/text_extensions.dart'; import '../../../../extensions/text_extensions.dart';
import '../../../app_style/app_color.dart'; import '../../../app_style/app_color.dart';
import 'calendar_header.dart'; import 'calendar_header.dart';
@ -17,35 +20,66 @@ class MonthlyFragment extends StatefulWidget {
} }
class _MonthlyFragmentState extends State<MonthlyFragment> { class _MonthlyFragmentState extends State<MonthlyFragment> {
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<AllRequestsProvider>(context, listen: false).getCalenderRequests(
from: DateTime.now().subtract(const Duration(days: 31)),
to: DateTime.now(),
);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
//physics: BouncingScrollPhysics(),
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: Column( child: Column(
children: [ children: [
TableCalendar( Consumer<AllRequestsProvider>(
firstDay: DateTime.utc(2010, 10, 16), builder: (context, snapshot, _) => snapshot.isCalendarLoading
lastDay: DateTime.utc(2030, 3, 14), ? const Center(child: CircularProgressIndicator())
focusedDay: DateTime.now(), : TableCalendar(
firstDay: _firstDate,
lastDay: _lastDate,
focusedDay: _initialDate,
calendarFormat: CalendarFormat.month, calendarFormat: CalendarFormat.month,
weekendDays: const [], weekendDays: const [],
rowHeight: 45, rowHeight: 45,
availableGestures: AvailableGestures.none, availableGestures: AvailableGestures.none,
onCalendarCreated: (controller) {
_controller = controller;
},
calendarBuilders: CalendarBuilders( calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime), 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) { dowBuilder: (context, dateTime) {
final day = DateFormat("EE").format(dateTime).toUpperCase(); final day = DateFormat("EE", context.isAr? "ar" : "en").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
}, },
defaultBuilder: (context, dateTime, _) { defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime); final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(day: day); 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, daysOfWeekHeight: 35.toScreenHeight,
@ -61,6 +95,7 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
), ),
), ),
),
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
@ -69,17 +104,19 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
children: [ children: [
const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8), const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8),
8.width, 8.width,
"My Requests".heading6(context), context.translation.myRequests.heading6(context),
], ],
), ),
16.height, 16.height,
Row(
children: [ /// TODO : TBD
const CircleAvatar(backgroundColor: AppColor.green50, radius: 8), // Row(
8.width, // children: [
"My Team Requests".heading6(context), // const CircleAvatar(backgroundColor: AppColor.green50, radius: 8),
], // 8.width,
), // "My Team Requests".heading6(context),
// ],
// ),
], ],
), ),
], ],

@ -1,11 +1,18 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:provider/provider.dart';
import 'package:table_calendar/table_calendar.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/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.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'; import 'calender_days_card.dart';
class WeeklyFragment extends StatefulWidget { class WeeklyFragment extends StatefulWidget {
@ -18,12 +25,15 @@ class WeeklyFragment extends StatefulWidget {
} }
class _WeeklyFragmentState extends State<WeeklyFragment> { class _WeeklyFragmentState extends State<WeeklyFragment> {
DateTime currentDateTime = DateTime.now(); DateTime _initialDate, _firstDate, _lastDate;
PageController _controller;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_initialDate = DateTime.now();
_firstDate = DateTime.utc(2010, 10, 16);
_lastDate = DateTime.utc(2030, 3, 14);
Provider.of<AllRequestsProvider>(context, listen: false).getCalenderRequests(from: DateTime.now().subtract(const Duration(days: 7)), to: DateTime.now());
} }
@override @override
@ -34,34 +44,42 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Consumer<AllRequestsProvider>(builder: (context, snapshot, _) {
return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
TableCalendar( snapshot.isCalendarLoading
firstDay: DateTime.utc(2010, 10, 16), ? const Center(child: CircularProgressIndicator())
lastDay: DateTime.utc(2030, 3, 14), : TableCalendar(
focusedDay: DateTime.now(), firstDay: _firstDate,
lastDay: _lastDate,
focusedDay: _initialDate,
calendarFormat: CalendarFormat.week, calendarFormat: CalendarFormat.week,
weekendDays: const [], weekendDays: const [],
onCalendarCreated: (controller) { onCalendarCreated: (controller) {},
_controller = controller;
},
calendarBuilders: CalendarBuilders( calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => Column( headerTitleBuilder: (context, dateTime) => Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
DateFormat("EEEE, d MMMM, yyyy").format(dateTime).heading5(context), DateFormat("EEEE, d MMMM, yyyy", context.isAr? "ar" : "en").format(dateTime).heading5(context),
8.height, 8.height,
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
], ],
), ),
dowBuilder: (context, dateTime) { dowBuilder: (context, dateTime) {
final day = DateFormat("EE").format(dateTime).toUpperCase(); final day = DateFormat("EE", context.isAr? "ar" : "en").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50)); return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
}, },
defaultBuilder: (context, dateTime, _) { defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime); final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(day: day); 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, daysOfWeekHeight: 35.toScreenHeight,
@ -72,6 +90,35 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30), 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,
),
// TableCalendar( // TableCalendar(
// headerVisible: false, // headerVisible: false,
// calendarFormat: CalendarFormat.week, // calendarFormat: CalendarFormat.week,
@ -94,8 +141,9 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
// availableGestures: AvailableGestures.none, // availableGestures: AvailableGestures.none,
// ), // ),
], ],
).toShadowContainer(context), ).toShadowContainer(context);
); }),
).paddingOnly(start: 16, end: 16);
} }
BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle); BoxDecoration cellDecoration({Color color}) => BoxDecoration(color: color ?? Colors.transparent, shape: BoxShape.circle);

@ -39,7 +39,7 @@ class ProgressFragment extends StatelessWidget {
initialAngleInDegree: 270, initialAngleInDegree: 270,
chartType: ChartType.ring, chartType: ChartType.ring,
ringStrokeWidth: 40.toScreenWidth, ringStrokeWidth: 40.toScreenWidth,
centerText: "Total\n20", centerText: "${context.translation.total}\n20",
centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
legendOptions: const LegendOptions(showLegends: false), legendOptions: const LegendOptions(showLegends: false),
chartValuesOptions: ChartValuesOptions( chartValuesOptions: ChartValuesOptions(
@ -69,9 +69,9 @@ class ProgressFragment extends StatelessWidget {
// setState(() {}); // setState(() {});
}, },
tabs: [ tabs: [
Tab(text: "Open", height: 57.toScreenHeight), Tab(text: context.translation.open, height: 57.toScreenHeight),
Tab(text: "In Progress", height: 57.toScreenHeight), Tab(text: context.translation.inProgress, height: 57.toScreenHeight),
Tab(text: "Completed", height: 57.toScreenHeight), Tab(text: context.translation.completed, height: 57.toScreenHeight),
], ],
), ),
), ),

@ -42,7 +42,7 @@ class RequestsFragment extends StatelessWidget {
children: [ children: [
Text( Text(
value, 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, ).toShimmer(isShow: isLoading).expanded,
8.width, 8.width,
SvgPicture.asset('assets/images/$icon.svg', height: 35, width: 35).toShimmer(isShow: isLoading), SvgPicture.asset('assets/images/$icon.svg', height: 35, width: 35).toShimmer(isShow: isLoading),
@ -50,7 +50,7 @@ class RequestsFragment extends StatelessWidget {
).expanded, ).expanded,
Text( Text(
"$title\n${context.translation.requests}", "$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), ).toShimmer(isShow: isLoading),
8.height, 8.height,
Row( Row(

@ -39,7 +39,7 @@ class _DashboardPageState extends State<DashboardPage> {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
backgroundColor: const Color(0xffF8F9FB), backgroundColor: context.isDark ? AppColor.neutral70 : Color(0xffF8F9FB),
titleSpacing: 0, titleSpacing: 0,
title: Row( title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,

@ -75,7 +75,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), context.translation.transferDetails.heading5(context),
8.height, 8.height,
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -109,7 +109,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
// ), // ),
1.width, 1.width,
Text(widget.model.createdOn != null ? widget.model.createdOn.toServiceRequestCardFormat : "", 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,29 +163,15 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
} }
_buildDetailsCard(Widget widget) { _buildDetailsCard(Widget widget) {
return Container( return widget.toShadowContainer(context).paddingOnly(top: 14, start: 14, end: 14);
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
child: widget,
).paddingOnly(top: 14, start: 14, end: 14);
} }
_buildTextWidget(String text) { _buildTextWidget(String text) {
return Text( return text.bodyText(context);
text,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
);
} }
_buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}) { _buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}) {
return Container( return Column(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
@ -196,7 +182,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
children: [ children: [
statusLabel ?? Container(), statusLabel ?? Container(),
8.height, 8.height,
Text(isSender ? context.translation.senderDetails : context.translation.receiverDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), isSender ? context.translation.senderDetails.heading5(context) : context.translation.receiverDetails.heading5(context),
], ],
), ),
if ((_userProvider.user?.type == UsersTypes.engineer) && (isSender ? _model.senderMachineStatusName != "Closed" : _model.receiverMachineStatusName != "Closed")) if ((_userProvider.user?.type == UsersTypes.engineer) && (isSender ? _model.senderMachineStatusName != "Closed" : _model.receiverMachineStatusName != "Closed"))
@ -233,8 +219,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
), ),
8.height, 8.height,
], ],
).paddingAll(14), ).toShadowContainer(context).paddingOnly(top: 14, start: 14, end: 14);
).paddingOnly(top: 14, start: 14, end: 14);
} }
int getIdstatus(String status) { int getIdstatus(String status) {

@ -206,32 +206,15 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
} }
_buildCard() { _buildCard() {
return Container( return Column(
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, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), context.translation.transferDetails.heading5(context),
8.height, 8.height,
Text( '${context.translation.assetName}: ${_formModel.assetName}'.bodyText(context),
'${context.translation.assetName}: ${_formModel.assetName}', ///TBDZ
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), '${context.translation.requesterName}: '.bodyText(context),
),
///TBD
Text(
'${context.translation.requesterName}: ',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
], ],
).paddingAll(16), ).toShadowContainer(context);
);
} }
} }

@ -66,15 +66,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
} }
Widget informationCard() { Widget informationCard() {
return Container( return Column(
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: [ children: [
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -99,22 +91,13 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0), textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0),
backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)), backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)),
8.height, 8.height,
Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), context.translation.gasRefillRequest.heading5(context),
8.height, 8.height,
///TBD ///TBD
Text( context.translation.gasRequest.bodyText(context),
context.translation.gasRequest, '${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}'.bodyText(context),
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), '${context.translation.site}: ${widget.model.site.name}'.bodyText(context),
),
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, 1.width.expanded,
@ -160,14 +143,8 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
8.height, 8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height, 8.height,
Text( '${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}'.bodyText(context),
'${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}', '${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}'.bodyText(context),
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, 8.height,
], ],
).paddingAll(16), ).paddingAll(16),
@ -225,7 +202,6 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
).paddingOnly(bottom: 16, start: 16, end: 16)) ).paddingOnly(bottom: 16, start: 16, end: 16))
.onPress(() {}), .onPress(() {}),
], ],
), ).toShadowContainer(context).paddingAll(16);
).paddingAll(16);
} }
} }

@ -184,41 +184,18 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
Container( Column(
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, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text(context.translation.gasRefill, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), context.translation.gasRefill.heading5(context),
8.height, 8.height,
/// TBD /// TBD
Text( '${context.translation.gasRequest}:'.bodyText(context),
'Gas Request:', '${context.translation.cylinderSize}: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.value}'.bodyText(context),
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), '${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context),
), '${context.translation.site}: ${widget.gasRefillModel.site.name}'.bodyText(context),
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), ).paddingAll(16),
),
12.height, 12.height,
AppTimer( AppTimer(
label: context.translation.workingHours, label: context.translation.workingHours,
@ -259,7 +236,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
onSaved: (value) {}, onSaved: (value) {},
), ),
], ],
).paddingAll(16), ).toShadowContainer(context).paddingAll(16),
).expanded, ).expanded,
AppFilledButton( AppFilledButton(
label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update, label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update,

@ -9,6 +9,7 @@ import 'package:share/share.dart';
import 'package:test_sa/controllers/notification/firebase_notification_manger.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/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_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/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
@ -87,11 +88,11 @@ class _LandPageState extends State<LandPage> {
onWillPop: () async { onWillPop: () async {
bool result = await showDialog( bool result = await showDialog(
context: context, context: context,
builder: (_) => const AAlertDialog( builder: (_) => AAlertDialog(
// title: _subtitle.exit, // title: _subtitle.exit,
title: "Exit", title: context.translation.exit,
// content: _subtitle.exitAlert, // content: _subtitle.exitAlert,
content: "Are you sure you want to exit?", content: context.translation.sureExit,
)); ));
if (result == true) { if (result == true) {
if (Platform.isAndroid) { if (Platform.isAndroid) {
@ -129,9 +130,9 @@ class _LandPageState extends State<LandPage> {
// ) // )
// ), // ),
// ), // ),
SizedBox( // SizedBox(
height: 48 * AppStyle.getScaleFactor(context), // height: 48 * AppStyle.getScaleFactor(context),
), // ),
// Hero( // Hero(
// tag: "logo", // tag: "logo",
// child: Image( // child: Image(
@ -150,7 +151,7 @@ class _LandPageState extends State<LandPage> {
if (_userProvider.user != null && _userProvider.user.type == UsersTypes.normal_user) if (_userProvider.user != null && _userProvider.user.type == UsersTypes.normal_user)
LandPageItem( LandPageItem(
// text: _subtitle.newServiceRequest, // text: _subtitle.newServiceRequest,
text: "New Service Request", text: context.translation.newServiceRequest,
icon: FontAwesomeIcons.screwdriverWrench, icon: FontAwesomeIcons.screwdriverWrench,
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(CreateServiceRequestPage.id); Navigator.of(context).pushNamed(CreateServiceRequestPage.id);
@ -158,7 +159,7 @@ class _LandPageState extends State<LandPage> {
), ),
LandPageItem( LandPageItem(
// text: _subtitle.trackServiceRequest, // text: _subtitle.trackServiceRequest,
text: "Track Service Request", text: context.translation.trackServiceRequest,
icon: FontAwesomeIcons.listCheck, icon: FontAwesomeIcons.listCheck,
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(ServiceRequestsPage.id); Navigator.of(context).pushNamed(ServiceRequestsPage.id);
@ -167,7 +168,7 @@ class _LandPageState extends State<LandPage> {
//if (_userProvider.user.type == UsersTypes.engineer) //if (_userProvider.user.type == UsersTypes.engineer)
LandPageItem( LandPageItem(
// text: _subtitle.preventiveMaintenance, // text: _subtitle.preventiveMaintenance,
text: "Preventive Maintenance", text: context.translation.preventiveMaintenance,
icon: FontAwesomeIcons.personWalking, icon: FontAwesomeIcons.personWalking,
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(RegularVisitsPage.id); Navigator.of(context).pushNamed(RegularVisitsPage.id);
@ -183,7 +184,7 @@ class _LandPageState extends State<LandPage> {
// ), // ),
if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.engineer) if (_userProvider?.user != null && _userProvider?.user?.type != UsersTypes.engineer)
LandPageItem( LandPageItem(
text: "Request Gas Refill", text: context.translation.requestGasRefill,
icon: FontAwesomeIcons.truckFast, icon: FontAwesomeIcons.truckFast,
onPressed: () { onPressed: () {
// Navigator.of(context).pushNamed(RequestGasRefill.id); // Navigator.of(context).pushNamed(RequestGasRefill.id);
@ -191,21 +192,21 @@ class _LandPageState extends State<LandPage> {
}, },
), ),
LandPageItem( LandPageItem(
text: "Track Gas Refill", text: context.translation.trackGasRefill,
icon: Icons.content_paste_search, icon: Icons.content_paste_search,
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(TrackGasRefillPage.id); Navigator.of(context).pushNamed(TrackGasRefillPage.id);
}, },
), ),
LandPageItem( LandPageItem(
text: "Transfer Asset", text: context.translation.deviceTransfer,
icon: FontAwesomeIcons.rightLeft, icon: FontAwesomeIcons.rightLeft,
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(RequestDeviceTransfer.id); Navigator.of(context).pushNamed(RequestDeviceTransfer.id);
}, },
), ),
LandPageItem( LandPageItem(
text: "Track Asset Transfer", text: context.translation.trackAssetTransfer,
icon: FontAwesomeIcons.peopleCarryBox, icon: FontAwesomeIcons.peopleCarryBox,
onPressed: () { onPressed: () {
Navigator.of(context).pushNamed(TrackDeviceTransferPage.id); Navigator.of(context).pushNamed(TrackDeviceTransferPage.id);
@ -223,219 +224,219 @@ class _LandPageState extends State<LandPage> {
), ),
], ],
), ),
Align( // Align(
alignment: Alignment.topLeft, // alignment: Alignment.topLeft,
child: ABackButton( // child: ABackButton(
icon: Icons.power_settings_new_rounded, // icon: Icons.power_settings_new_rounded,
onPressed: () async { // onPressed: () async {
bool result = await showDialog( // bool result = await showDialog(
context: context, // context: context,
builder: (_) => const AAlertDialog( // builder: (_) => const AAlertDialog(
// title: _subtitle.signOut, // // title: _subtitle.signOut,
title: "Sign Out", // title: "Sign Out",
// content: _subtitle.signOutAlert, // // content: _subtitle.signOutAlert,
content: "Are you sure you want to exit?", // content: "Are you sure you want to exit?",
)); // ));
if (result) { // if (result) {
// _devicesProvider.reset(); // // _devicesProvider.reset();
// _departmentsProvider.reset(); // // _departmentsProvider.reset();
// _serviceRequestsProvider.reset(); // // _serviceRequestsProvider.reset();
// _regularVisitsProvider.reset(); // // _regularVisitsProvider.reset();
// _preventiveMaintenanceVisitsProvider.reset(); // // _preventiveMaintenanceVisitsProvider.reset();
_settingProvider.resetSettings(); // _settingProvider.resetSettings();
_userProvider.reset(); // _userProvider.reset();
Navigator.of(context).pop(); // 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, // Align(
// title: _subtitle.email, // alignment: Alignment.topRight,
title: "Email", // child: Padding(
onPressed: () { // padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
launch("mailto:customerservice@Test SA.com"); // child: AIconButton(
}, // iconData: Icons.menu,
), // color: AColors.primaryColor,
// DrawerItem( // buttonSize: 42,
// icon: Icons.phone_in_talk, // backgroundColor: AColors.white,
// title: "${_subtitle.hotLine} 15564",
// onPressed: () { // onPressed: () {
// launch("tel:15564"); // _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( // DrawerItem(
// icon: FontAwesomeIcons.linkedinIn, // icon: Icons.mail,
// title: _subtitle.linkedIn, // // title: _subtitle.email,
// title: "Email",
// onPressed: () { // onPressed: () {
// launch("https://www.linkedin.com/company/Test SA/"); // 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( // DrawerItem(
// icon: FontAwesomeIcons.globe, // icon: Icons.share,
// title: _subtitle.ourWebsite, // // title: _subtitle.shareApp,
// onPressed: () { // title: "Share App",
// launch("https://www.Test SA.com/"); // 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);
// }, // },
// ), // ),
DrawerItem( // ],
icon: Icons.share, // ).expanded,
// title: _subtitle.shareApp, // Divider(height: 1, thickness: 1, color: AColors.greyEF),
title: "Share App", // Row(
onPressed: () async { // mainAxisAlignment: MainAxisAlignment.center,
PackageInfo packageInfo = await PackageInfo.fromPlatform(); // children: [
String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/"; // Text(
Share.share(shareLink); // "Powered By Cloud Solutions",
}, // style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12),
), // textScaleFactor: AppStyle.getScaleFactor(context),
], // ),
).expanded, // 6.width,
Divider(height: 1, thickness: 1, color: AColors.greyEF), // Image.asset("assets/images/cloud_logo.png", width: 32, height: 32)
Row( // ],
mainAxisAlignment: MainAxisAlignment.center, // ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8),
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),
],
),
),
), ),
); );
} }

@ -54,7 +54,7 @@ class NotificationsList extends StatelessWidget {
}, },
); );
}, },
), ).toShadowContainer(context),
), ),
), ),
); );

@ -43,7 +43,7 @@ class _ServiceRequestsPageState extends State<ServiceRequestsPage> with TickerPr
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.serviceRequest), appBar: DefaultAppBar(title: context.translation.serviceRequest),
backgroundColor: const Color(0xfff8f9fb), //backgroundColor: context.isDark? :const Color(0xfff8f9fb),
body: SafeArea( body: SafeArea(
child: LoadingManager( child: LoadingManager(
isLoading: _serviceRequestsProvider.isLoading, isLoading: _serviceRequestsProvider.isLoading,

@ -50,15 +50,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
// _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id); // _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id);
Widget informationCard() { Widget informationCard() {
return Container( return Column(
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, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Column( Column(
@ -87,19 +79,19 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
], ],
), ),
8.height, 8.height,
Text(widget.serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), Text(widget.serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: context.isDark?AppColor.neutral30: const Color(0xFF3B3D4A))),
8.height, 8.height,
Text( Text(
'${context.translation.assetNumber}: ${widget.serviceRequest.device.assetNumber}', '${context.translation.assetNumber}: ${widget.serviceRequest.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.requestType}: ${widget.serviceRequest.type.name}', '${context.translation.requestType}: ${widget.serviceRequest.type.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.requestNo}: ${widget.serviceRequest.requestCode}', '${context.translation.requestNo}: ${widget.serviceRequest.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
], ],
).expanded, ).expanded,
@ -111,7 +103,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest))); Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest)));
}), }),
if (_userProvider.user.type == UsersTypes.engineer) 16.height, if (_userProvider.user.type == UsersTypes.engineer) 16.height,
Text(widget.serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), Text(widget.serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))),
], ],
) )
], ],
@ -121,11 +113,11 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
8.height, 8.height,
Text( Text(
'${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}', '${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}', '${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
8.height, 8.height,
if ((widget.serviceRequest.callComments ?? "").isNotEmpty) ...[ if ((widget.serviceRequest.callComments ?? "").isNotEmpty) ...[
@ -133,7 +125,7 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
8.height, 8.height,
Text( Text(
widget.serviceRequest.callComments, widget.serviceRequest.callComments,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
], ],
if (widget.serviceRequest.devicePhotos.isNotEmpty) ...[ if (widget.serviceRequest.devicePhotos.isNotEmpty) ...[
@ -208,13 +200,12 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
); );
}), }),
], ],
), ).toShadowContainer(context);
);
} }
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.serviceDetails), appBar: DefaultAppBar(title: context.translation.serviceDetails),
backgroundColor: const Color(0xfff8f9fb), //backgroundColor: const Color(0xfff8f9fb),
body: SafeArea( body: SafeArea(
child: FutureBuilder( child: FutureBuilder(
future: _serviceRequestsProvider.getServiceRequestObjectById(requestId: widget.serviceRequest.id), future: _serviceRequestsProvider.getServiceRequestObjectById(requestId: widget.serviceRequest.id),

@ -34,7 +34,7 @@ class WorkOrderDetailsPage extends StatelessWidget {
margin: const EdgeInsets.all(16), margin: const EdgeInsets.all(16),
width: double.infinity, width: double.infinity,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: Colors.white, color: context.isDark?Theme.of(context).cardColor:Colors.white,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)], shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
), ),
@ -44,31 +44,31 @@ class WorkOrderDetailsPage extends StatelessWidget {
children: [ children: [
StatusLabel(label: workOrder.currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), StatusLabel(label: workOrder.currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height, 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, 8.height,
Text( Text(
'${context.translation.assetName}: ${workOrder.callRequest.asset.modelDefinition.assetName}', '${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( Text(
'${context.translation.status}: ${workOrder.currentSituation.name}', '${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( Text(
'${context.translation.orderWorkNumber}: ${workOrder.workOrderNo}', '${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( Text(
'${context.translation.assignedEmployee}: ${workOrder.assignedEmployee?.name ?? ""}', '${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.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: 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: 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: 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: 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: 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: const Color(0xFF757575))), Text('${context.translation.callLastSituation}: ${workOrder.calllastSituation.name ?? '' ?? ""}', style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575))),
], ],
).paddingAll(16), ).paddingAll(16),
), ),

@ -38,7 +38,7 @@ class WorkOrderListPage extends StatelessWidget {
print("serviceRequest.statusValue:${serviceRequest.statusValue}"); print("serviceRequest.statusValue:${serviceRequest.statusValue}");
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.workOrders), appBar: DefaultAppBar(title: context.translation.workOrders),
backgroundColor: const Color(0xfff8f9fb), //backgroundColor: const Color(0xfff8f9fb),
body: SafeArea( body: SafeArea(
child: FutureBuilder( child: FutureBuilder(
future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode), future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
@ -56,15 +56,7 @@ class WorkOrderListPage extends StatelessWidget {
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; 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; Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return Container( return Column(
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: [ children: [
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -80,7 +72,7 @@ class WorkOrderListPage extends StatelessWidget {
children: [ children: [
StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40), StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height, 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))),
], ],
).expanded, ).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
@ -101,15 +93,15 @@ class WorkOrderListPage extends StatelessWidget {
children: [ children: [
Text( Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}', '${context.translation.assetName}: ${workOrders[index].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( Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}', '${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)),
), ),
], ],
).expanded, ).expanded,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))),
], ],
), ),
16.height, 16.height,
@ -134,8 +126,7 @@ class WorkOrderListPage extends StatelessWidget {
// onPressed(request); // onPressed(request);
}), }),
], ],
), ).toShadowContainer(context);
);
}, },
).expanded, ).expanded,
if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)) if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3))

@ -87,12 +87,12 @@ class _EditPentryState extends State<EditPentry> with SingleTickerProviderStateM
child: Column( child: Column(
children: [ children: [
Container( 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( child: TabBar(
controller: _tabController, controller: _tabController,
isScrollable: true, isScrollable: true,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
labelColor: AppColor.neutral60, labelColor: context.isDark? AppColor.neutral10 :AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20, unselectedLabelColor: AppColor.neutral20,
indicatorPadding: const EdgeInsets.all(4), indicatorPadding: const EdgeInsets.all(4),
indicator: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)), indicator: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),

@ -31,16 +31,8 @@ class VisitDetailsPage extends StatelessWidget {
child: Column( child: Column(
children: [ children: [
SingleChildScrollView( 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( child: Column(
mainAxisSize: MainAxisSize.min, //mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
@ -61,21 +53,20 @@ class VisitDetailsPage extends StatelessWidget {
], ],
), ),
8.height, 8.height,
Text(visit.deviceEnglishName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), visit.deviceEnglishName.heading5(context),
8.height, 8.height,
Text('${context.translation.assetNumber}: ${visit.deviceNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.assetNumber}: ${visit.deviceNumber}'.bodyText(context),
Text('${context.translation.assetSN}: ${visit.deviceSerialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.assetSN}: ${visit.deviceSerialNumber}'.bodyText(context),
Text('${context.translation.code}: ${visit.serialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.code}: ${visit.serialNumber}'.bodyText(context),
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
Text('${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}'.bodyText(context),
Text('${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}'.bodyText(context),
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
Text('${context.translation.assignedTo}: ${visit.assignTo}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.assignedTo}: ${visit.assignTo}'.bodyText(context),
Text('${context.translation.engineerName}: ${visit.employName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.engineerName}: ${visit.employName}'.bodyText(context),
Text('${context.translation.site}: ${visit.hospitalName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))), '${context.translation.site}: ${visit.hospitalName}'.bodyText(context),
], ],
).paddingAll(16), ).toShadowContainer(context).paddingAll(16),
),
).expanded, ).expanded,
if (userProvider.user.type == UsersTypes.engineer && visit.status.id != 270) if (userProvider.user.type == UsersTypes.engineer && visit.status.id != 270)
AppFilledButton( AppFilledButton(

@ -19,7 +19,7 @@ class ADatePicker extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: context.isDark?AppColor.neutral50:Colors.white,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
border: Border.all(width: 1, color: Theme.of(context).scaffoldBackgroundColor), border: Border.all(width: 1, color: Theme.of(context).scaffoldBackgroundColor),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],

@ -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/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.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'; import '../../../extensions/text_extensions.dart';
@ -22,15 +23,10 @@ class DeviceTransferItem extends StatelessWidget {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
Text(context.translation.deviceTransferRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), context.translation.deviceTransferRequest.heading5(context),
Text(
'${context.translation.from} : ${item.senderAssignedEmployeeName}', '${context.translation.from} : ${item.senderAssignedEmployeeName}'.bodyText(context),
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), '${context.translation.to} : ${item.receiverAssignedEmployeeName}'.bodyText(context),
),
Text(
'${context.translation.to} : ${item.receiverAssignedEmployeeName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height, 8.height,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -63,7 +59,7 @@ class DeviceTransferItem extends StatelessWidget {
/// TBD /// TBD
//StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
1.width, 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))),
], ],
), ),
], ],

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:signature/signature.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/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
@ -57,7 +58,7 @@ class _ESignatureState extends State<ESignature> {
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
decoration: BoxDecoration( 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), 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)], boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),

@ -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/lazy_loading.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../new_views/app_style/app_color.dart';
class AssetDetailPage extends StatefulWidget { class AssetDetailPage extends StatefulWidget {
static const String id = "/asset-details"; static const String id = "/asset-details";
@ -62,15 +64,6 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
if (snapshot.hasData) { if (snapshot.hasData) {
return SingleChildScrollView( return SingleChildScrollView(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: Container(
padding: const EdgeInsets.all(16),
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( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -97,42 +90,35 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
_assetProvider.assetById?.modelDefinition?.assetName ?? "-", _assetProvider.assetById?.modelDefinition?.assetName ?? "-".heading5(context),
style: AppTextStyles.heading5.copyWith(color: Color(0xFF3B3D4A)),
), ),
8.height, 8.height,
Text( "${context.translation.assetNumber}: ${_assetProvider.assetById.multiAssets.first.assetNumber}".bodyText(context),
"${context.translation.assetNumber}: ${_assetProvider.assetById.multiAssets.first.assetNumber}", "${context.translation.model}: ${_assetProvider.assetById.modelDefinition.modelDefCode}".bodyText(context),
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
"${context.translation.model}: ${_assetProvider.assetById.modelDefinition.modelDefCode}",
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text( Text(
"${context.translation.serialNo}: ${_assetProvider.assetById.multiAssets.first.assetSerialNo}", "${context.translation.serialNo}: ${_assetProvider.assetById.multiAssets.first.assetSerialNo}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
"MD: ${_assetProvider.assetById.department.departmentName ?? "-"}", "MD: ${_assetProvider.assetById.department.departmentName ?? "-"}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
Text( Text(
"Supplier: ${_assetProvider.assetById.supplier?.suppliername ?? "-"}", "Supplier: ${_assetProvider.assetById.supplier?.suppliername ?? "-"}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
Text( Text(
"Manufacturer: ${_assetProvider.assetById.modelDefinition.manufacturerName}", "Manufacturer: ${_assetProvider.assetById.modelDefinition.manufacturerName}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
Text( Text(
"Location: ${_assetProvider.assetById.site.custName}", "Location: ${_assetProvider.assetById.site.custName}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
8.height, 8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
@ -140,17 +126,17 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
Text( Text(
"Installation Date: ${_assetProvider.assetById.installationDate ?? "-"}", "Installation Date: ${_assetProvider.assetById.installationDate ?? "-"}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
Text( Text(
"Next PM Date: ${_assetProvider.assetById.installationDate ?? "-"}", "Next PM Date: ${_assetProvider.assetById.installationDate ?? "-"}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
Text( Text(
"Last PM Date: ${_assetProvider.assetById.installationDate ?? "-"}", "Last PM Date: ${_assetProvider.assetById.installationDate ?? "-"}",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
if ((_assetProvider.assetById.modelDefinition.assetDescription ?? "").isNotEmpty) ...[ if ((_assetProvider.assetById.modelDefinition.assetDescription ?? "").isNotEmpty) ...[
8.height, 8.height,
@ -159,14 +145,13 @@ class _AssetDetailPageState extends State<AssetDetailPage> {
Text( Text(
_assetProvider.assetById.modelDefinition.assetDescription ?? "-", _assetProvider.assetById.modelDefinition.assetDescription ?? "-",
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral10: Color(0xFF757575)),
), ),
] ]
], ],
) )
], ],
), ).toShadowContainer(context),
),
); );
} }
return Center(child: ALoading()); return Center(child: ALoading());

@ -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/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
class AssetItemGridView extends StatelessWidget { class AssetItemGridView extends StatelessWidget {
final Asset device; final Asset device;
@ -14,16 +15,7 @@ class AssetItemGridView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Column(
padding: const EdgeInsets.all(16),
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: [ children: [
AspectRatio( AspectRatio(
aspectRatio: 159 / 94, aspectRatio: 159 / 94,
@ -49,26 +41,20 @@ class AssetItemGridView extends StatelessWidget {
Text( Text(
device.modelDefinition.assetName, device.modelDefinition.assetName,
maxLines: 2, maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF3B3D4A)), style: AppTextStyles.bodyText.copyWith(color: context.isDark? AppColor.neutral30: Color(0xFF3B3D4A)),
), ),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( "${context.translation.assetNumber} : ${device.assetNumber}".bodyText2(context),
"${context.translation.assetNumber} : ${device.assetNumber}", "${context.translation.model} : ${device.modelDefinition.modelDefCode}".bodyText2(context),
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)),
),
Text(
"${context.translation.model} : ${device.modelDefinition.modelDefCode}",
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)),
),
Text( Text(
"${context.translation.serialNo} : ${device.assetSerialNo}", "${context.translation.serialNo} : ${device.assetSerialNo}",
maxLines: 2, maxLines: 2,
overflow: TextOverflow.fade, overflow: TextOverflow.fade,
style: AppTextStyles.bodyText2.copyWith( style: AppTextStyles.bodyText2.copyWith(
color: Color(0xFF757575), color: context.isDark? AppColor.neutral10: Color(0xFF757575),
), ),
), ),
], ],
@ -91,7 +77,6 @@ class AssetItemGridView extends StatelessWidget {
], ],
).expanded ).expanded
], ],
), ).onPress(() => onPressed(device)).toShadowContainer(context);
).onPress(() => onPressed(device));
} }
} }

@ -38,29 +38,15 @@ class AssetItemListView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( device.modelDefinition.assetName.heading5(context),
device.modelDefinition.assetName, "${context.translation.assetNumber} : ${device.assetNumber}".bodyText(context),
maxLines: 2, "${context.translation.model} : ${device.modelDefinition.modelDefCode}".bodyText(context),
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)),
),
], ],
), ),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Text( "${context.translation.serialNo} : ${device.assetSerialNo}".bodyText(context).expanded,
"${context.translation.serialNo} : ${device.assetSerialNo}",
maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
).expanded,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [

@ -91,7 +91,7 @@ class _SingleDevicePickerState extends State<SingleDevicePicker> {
padding: const EdgeInsets.only(left: 16, right: 8), padding: const EdgeInsets.only(left: 16, right: 8),
alignment: Alignment.center, alignment: Alignment.center,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: Color(0xFFEAF1F4), color: context.isDark?Color(0xFF3B3D4A): Color(0xFFEAF1F4),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
), ),

@ -6,6 +6,7 @@ import 'package:test_sa/extensions/widget_extensions.dart';
import '../../../extensions/text_extensions.dart'; import '../../../extensions/text_extensions.dart';
import '../../../models/new_models/gas_refill_model.dart'; import '../../../models/new_models/gas_refill_model.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../app_style/colors.dart'; import '../../app_style/colors.dart';
import '../requests/request_status.dart'; import '../requests/request_status.dart';
@ -33,19 +34,13 @@ class GasRefillItem extends StatelessWidget {
// 8.width, // 8.width,
StatusLabel(label: item.status.name, textColor: AColors.getRequestStatusTextColor(item.status.value), backgroundColor: AColors.getRequestStatusColor(item.status.value)), StatusLabel(label: item.status.name, textColor: AColors.getRequestStatusTextColor(item.status.value), backgroundColor: AColors.getRequestStatusColor(item.status.value)),
1.width.expanded, 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, 8.height,
Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), context.translation.gasRefillRequest.heading5(context),
Text( '${context.translation.gasType}: ${item.gazRefillDetails[0].gasType.name}'.bodyText(context),
'${context.translation.gasType}: ${item.gazRefillDetails[0].gasType.name}', '${context.translation.site}: ${item.site.name}'.bodyText(context),
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.site}: ${item.site.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height, 8.height,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

@ -1,8 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.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/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import '../../../new_views/app_style/app_color.dart';
class LandPageItem extends StatelessWidget { class LandPageItem extends StatelessWidget {
final String text; final String text;
final IconData icon; final IconData icon;
@ -14,19 +18,6 @@ class LandPageItem extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell( return InkWell(
onTap: onPressed, 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( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -44,10 +35,9 @@ class LandPageItem extends StatelessWidget {
height: 42 * AppStyle.getScaleFactor(context), height: 42 * AppStyle.getScaleFactor(context),
color: AColors.primaryColor, color: AColors.primaryColor,
), ),
Text(text, style: const TextStyle(color: AColors.grey3A)), Text(text, style: TextStyle(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,)),
], ],
), ).toShadowContainer(context),
),
); );
} }
} }

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; 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/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
@ -22,19 +23,19 @@ class NotificationItem extends StatelessWidget {
children: [ children: [
Text( Text(
notification.title ?? "", notification.title ?? "",
style: AppTextStyles.heading6.copyWith(color: AppColor.neutral50), style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,),
).expanded, ).expanded,
8.width, 8.width,
Text( Text(
notification.createdOn.toServiceRequestCardFormat ?? "", notification.createdOn.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppTextStyles.tinyFont.copyWith(color: AppColor.neutral50), style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral20 : AppColor.neutral50,),
), ),
], ],
), ),
Text( Text(
notification.text ?? "", notification.text ?? "",
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575),),
), ),
], ],
).onPress(() { ).onPress(() {
@ -42,3 +43,4 @@ class NotificationItem extends StatelessWidget {
}); });
} }
} }

@ -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/app_style/colors.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../new_views/app_style/app_color.dart';
class ServiceRequestItem extends StatelessWidget { class ServiceRequestItem extends StatelessWidget {
final int index; final int index;
final ServiceRequest request; final ServiceRequest request;
@ -31,15 +33,7 @@ class ServiceRequestItem extends StatelessWidget {
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; 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; Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return Container( return Column(
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: [ children: [
Column( Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -56,26 +50,26 @@ class ServiceRequestItem extends StatelessWidget {
8.width, 8.width,
StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)), StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)),
1.width.expanded, 1.width.expanded,
Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark? AppColor.neutral30:const Color(0xFF3B3D4A))),
], ],
), ),
8.height, 8.height,
Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: context.isDark? AppColor.neutral30:const Color(0xFF3B3D4A))),
Text( Text(
'${context.translation.assetName}: ${request.deviceEnName}', '${context.translation.assetName}: ${request.deviceEnName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.assetNumber}: ${request.device.assetNumber}', '${context.translation.assetNumber}: ${request.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.requestType}: ${request.type.name}', '${context.translation.requestType}: ${request.type.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
Text( Text(
'${context.translation.requestNo}: ${request.requestCode}', '${context.translation.requestNo}: ${request.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)), style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
), ),
8.height, 8.height,
Row( Row(
@ -96,9 +90,8 @@ class ServiceRequestItem extends StatelessWidget {
], ],
).paddingAll(16).onPress(() { ).paddingAll(16).onPress(() {
onPressed(request); onPressed(request);
}), }).toShadowContainer(context),
], ],
),
); );
} }
} }

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/material.dart'; 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/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
@ -107,7 +108,7 @@ class _AppTimerState extends State<AppTimer> {
height: 56.toScreenHeight, height: 56.toScreenHeight,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).cardColor, color: context.isDark?AppColor.neutral50:Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
), ),

@ -46,20 +46,11 @@ class VisitItem extends StatelessWidget {
], ],
), ),
8.height, 8.height,
Text(visit.deviceEnglishName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))), visit.deviceEnglishName.heading5(context),
8.height, 8.height,
Text( '${context.translation.assetNumber}: ${visit.deviceNumber}'.bodyText(context),
'${context.translation.assetNumber}: ${visit.deviceNumber}', '${context.translation.assetSN}: ${visit.deviceSerialNumber}'.bodyText(context),
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)), '${context.translation.code}: ${visit.serialNumber}'.bodyText(context),
),
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)),
),
16.height, 16.height,
Row( Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,

@ -42,11 +42,14 @@ class _VisitsListState extends State<VisitsList> {
onLazyLoad: widget.onLazyLoad, onLazyLoad: widget.onLazyLoad,
child: ListView.builder( child: ListView.builder(
itemCount: widget.visits.length, itemCount: widget.visits.length,
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
itemBuilder: (context, itemIndex) { itemBuilder: (context, itemIndex) {
Visit visit = widget.visits[itemIndex]; Visit visit = widget.visits[itemIndex];
// bool isSelected = _selectedVisits.contains(visit); // bool isSelected = _selectedVisits.contains(visit);
return VisitItem(visit: visit); return Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: VisitItem(visit: visit),
);
}, },
), ),
), ),

Loading…
Cancel
Save