dark / ligth dark

design_3.0_demo_module
nextwo 2 years ago
parent 4d07ddc7e8
commit 204305f705

@ -349,7 +349,8 @@
"addItem" : "اضافة عنصر",
"item" : "عنصر",
"serialNo" : "رقم التسلسلي",
"measuredValue": "القيمة المقاسه"
"measuredValue": "القيمة المقاسه",
"sureExit" : " هل انت متاكد من الخروج؟"
}

@ -324,7 +324,7 @@
"viewDetails" : "View Details",
"requests" : "Requests",
"highPriorityRequests" : "High Priority\nRequests",
"newRequests" : "New Request\nRequests",
"newRequests" : "New\nRequests",
"completedRequests" : "completed\nRequests",
"overdueRequests": "overdue\nRequests",
"highPriority" : "High Priority",
@ -348,8 +348,8 @@
"asset" : "Asset",
"addItem" : "Add Item",
"item" : "Item",
"measuredValue": "Measured Value"
"measuredValue": "Measured Value",
"sureExit" : "Are you sure ypu want to Exit? "
}

@ -68,20 +68,20 @@ class AppDrawer extends StatelessWidget {
// "logout" : "خروج"
padding: const EdgeInsets.only(top: 24),
children: [
drawerItem("drawer_notification", context.translation.notifications).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)),
drawerItem("drawer_notification", context.translation.notifications, context).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)),
18.height,
drawerItem("help_center", context.translation.helpCenter) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/,
drawerItem("help_center", context.translation.helpCenter, context) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/,
18.height,
drawerItem("rate_us", context.translation.rateUs),
drawerItem("rate_us", context.translation.rateUs, context),
18.height,
drawerItem("setting", context.translation.settings).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)),
drawerItem("setting", context.translation.settings, context).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)),
18.height,
drawerItem("report", context.translation.reportBg) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/,
drawerItem("report", context.translation.reportBg, context) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/,
18.height,
drawerItem("whats_new", context.translation.whatsNew),
drawerItem("whats_new", context.translation.whatsNew, context),
],
).expanded,
drawerItem("logout", context.translation.logout, color: AppColor.red50).onPress(() async {
drawerItem("logout", context.translation.logout, context, color: AppColor.red50).onPress(() async {
bool result = await showDialog(
context: context,
builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert),
@ -101,7 +101,7 @@ class AppDrawer extends StatelessWidget {
children: [
Text(
"Powered By Cloud Solutions",
style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12),
style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral10 : AppColor.neutral50, fontSize: 12),
textScaleFactor: AppStyle.getScaleFactor(context),
),
6.width,
@ -113,7 +113,7 @@ class AppDrawer extends StatelessWidget {
);
}
Widget drawerItem(String icon, String title, {Color color}) {
Widget drawerItem(String icon, String title, BuildContext context,{Color color}) {
return Row(
children: [
SvgPicture.asset(
@ -125,7 +125,7 @@ class AppDrawer extends StatelessWidget {
16.width,
Text(
title,
style: AppTextStyles.heading6.copyWith(color: color ?? const Color(0xFF3B3D4A)),
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50,),
),
],
);

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -41,21 +42,21 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
"My Shift".heading5(context),
8.height,
"Sunday to Thursday".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),
).paddingOnly(start: 16, end: 16),
16.height,
Container(
margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
decoration: BoxDecoration(color: context.isDark? AppColor.neutral10: AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar(
controller: _tabController,
padding: EdgeInsets.zero,
labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20,
indicatorPadding: const EdgeInsets.all(4),
indicator: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
indicator: BoxDecoration(color: context.isDark? AppColor.neutral20:Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
onTap: (index) {
setState(() {});
},

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -19,9 +20,9 @@ class CalendarHeader extends StatelessWidget {
children: [
dateFormat.format(dateTime).heading5(context),
6.width,
const Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: AppColor.neutral60, size: 24)),
Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.keyboard_arrow_down_sharp, color: context.isDark? AppColor.neutral10:AppColor.neutral60, size: 24)),
const Spacer(),
const Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.calendar_today, color: AppColor.neutral60, size: 18)),
Align(alignment: AlignmentDirectional.centerEnd, child: Icon(Icons.calendar_today, color: context.isDark? AppColor.neutral10:AppColor.neutral60, size: 18)),
],
),
8.height,

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -41,7 +42,7 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime),
dowBuilder: (context, dateTime) {
final day = DateFormat("EE").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: context.isDark? AppColor.neutral10:AppColor.neutral50));
},
defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime);
@ -69,7 +70,7 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
children: [
const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8),
8.width,
"My Requests".heading6(context),
context.translation.myRequests.heading6(context),
],
),
16.height,

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:table_calendar/table_calendar.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -57,7 +58,7 @@ class _WeeklyFragmentState extends State<WeeklyFragment> {
),
dowBuilder: (context, dateTime) {
final day = DateFormat("EE").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: context.isDark? AppColor.neutral10:AppColor.neutral50));
},
defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime);

@ -41,7 +41,7 @@ class RequestsFragment extends StatelessWidget {
children: [
Text(
value,
style: AppTextStyles.heading1.copyWith(color: AppColor.neutral70, height: 1),
style: AppTextStyles.heading1.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, height: 1),
).toShimmer(isShow: isLoading).expanded,
8.width,
SvgPicture.asset('assets/images/$icon.svg', height: 35, width: 35).toShimmer(isShow: isLoading),
@ -49,7 +49,7 @@ class RequestsFragment extends StatelessWidget {
).expanded,
Text(
title,
style: AppTextStyles.heading5.copyWith(color: AppColor.neutral50),
style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,),
).toShimmer(isShow: isLoading),
8.height,
Row(

@ -163,13 +163,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
}
_buildDetailsCard(Widget widget) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
child: widget,
).paddingOnly(top: 14, start: 14, end: 14);
return widget.paddingOnly(top: 14, start: 14, end: 14);
}
_buildTextWidget(String text) {

@ -66,166 +66,142 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
}
Widget informationCard() {
return Container(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/// TBD
//StatusLabel(
//label: item.priority.name,
//id: serviceRequest.priority.id,
//textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id),
//backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id)
//),
// 8.width,
StatusLabel(
label: widget.model.status?.name ?? "",
textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0),
backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)),
8.height,
Text(context.translation.gasRefillRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
return Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/// TBD
//StatusLabel(
//label: item.priority.name,
//id: serviceRequest.priority.id,
//textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id),
//backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id)
//),
// 8.width,
StatusLabel(
label: widget.model.status?.name ?? "",
textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0),
backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)),
8.height,
context.translation.gasRefillRequest.heading5(context),
8.height,
///TBD
Text(
context.translation.gasRequest,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.site}: ${widget.model.site.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
),
1.width.expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.engineer && (widget.model.status?.value ?? 0) != 2)
CircleAvatar(
radius: 25,
backgroundColor: AppColor.neutral30,
child: CircleAvatar(
radius: 24,
backgroundColor: Colors.white,
child: Padding(
padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
),
///TBD
context.translation.gasRequest.bodyText(context),
'${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}'.bodyText(context),
'${context.translation.site}: ${widget.model.site.name}'.bodyText(context),
],
),
1.width.expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.engineer && (widget.model.status?.value ?? 0) != 2)
CircleAvatar(
radius: 25,
backgroundColor: AppColor.neutral30,
child: CircleAvatar(
radius: 24,
backgroundColor: Colors.white,
child: Padding(
padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
),
).onPress(
() async {
_model?.fromGasRefillModel(widget.model);
// setState(() {});
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RequestGasRefill(
gasRefillModel: widget.model,
),
),
).then((value) {
if (value != null) {
_model = value;
}
});
setState(() {});
},
),
Text(widget.model.startDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
)
],
),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
Text(
'${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height,
],
).paddingAll(16),
).onPress(
() async {
_model?.fromGasRefillModel(widget.model);
// setState(() {});
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RequestGasRefill(
gasRefillModel: widget.model,
),
),
).then((value) {
if (value != null) {
_model = value;
}
});
setState(() {});
},
),
Text(widget.model.startDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
)
],
),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
'${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}'.bodyText(context),
'${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}'.bodyText(context),
8.height,
],
).paddingAll(16),
/// TBD
(_userProvider.user.type == UsersTypes.normal_user
? Container(
height: 50,
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: const ShapeDecoration(
color: Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
),
/// TBD
(_userProvider.user.type == UsersTypes.normal_user
? Container(
height: 50,
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: const ShapeDecoration(
color: Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
),
),
child: Row(
),
child: Row(
children: [
Text(
'${context.translation.commentHere}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
),
).expanded,
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
],
),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${context.translation.commentHere}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
),
).expanded,
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
'${context.translation.viewComments}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${context.translation.viewComments}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
],
).paddingOnly(bottom: 16, start: 16, end: 16))
.onPress(() {}),
],
),
).paddingAll(16);
],
).paddingOnly(bottom: 16, start: 16, end: 16))
.onPress(() {}),
],
).toShadowContainer(context).paddingAll(16);
}
}

@ -184,41 +184,18 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Container(
width: MediaQuery.of(context).size.width,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(context.translation.gasRefill, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
/// TBD
Text(
'Gas Request:',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Cylinder Size: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.value}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Request Quantity: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'Site: ${widget.gasRefillModel.site.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
).paddingAll(16),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
context.translation.gasRefill.heading5(context),
8.height,
/// TBD
'${context.translation.gasRequest}:'.bodyText(context),
'${context.translation.cylinderSize}: ${widget.gasRefillModel.gazRefillDetails[0].cylinderSize.value}'.bodyText(context),
'${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context),
'${context.translation.site}: ${widget.gasRefillModel.site.name}'.bodyText(context),
],
).paddingAll(16),
12.height,
AppTimer(
label: context.translation.workingHours,
@ -259,7 +236,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
onSaved: (value) {},
),
],
).paddingAll(16),
).toShadowContainer(context).paddingAll(16),
).expanded,
AppFilledButton(
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/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
@ -87,11 +88,11 @@ class _LandPageState extends State<LandPage> {
onWillPop: () async {
bool result = await showDialog(
context: context,
builder: (_) => const AAlertDialog(
builder: (_) => AAlertDialog(
// title: _subtitle.exit,
title: "Exit",
title: context.translation.exit,
// content: _subtitle.exitAlert,
content: "Are you sure you want to exit?",
content: context.translation.sureExit,
));
if (result == true) {
if (Platform.isAndroid) {
@ -129,9 +130,9 @@ class _LandPageState extends State<LandPage> {
// )
// ),
// ),
SizedBox(
height: 48 * AppStyle.getScaleFactor(context),
),
// SizedBox(
// height: 48 * AppStyle.getScaleFactor(context),
// ),
// Hero(
// tag: "logo",
// child: Image(
@ -223,219 +224,219 @@ class _LandPageState extends State<LandPage> {
),
],
),
Align(
alignment: Alignment.topLeft,
child: ABackButton(
icon: Icons.power_settings_new_rounded,
onPressed: () async {
bool result = await showDialog(
context: context,
builder: (_) => const AAlertDialog(
// title: _subtitle.signOut,
title: "Sign Out",
// content: _subtitle.signOutAlert,
content: "Are you sure you want to exit?",
));
if (result) {
// _devicesProvider.reset();
// _departmentsProvider.reset();
// _serviceRequestsProvider.reset();
// _regularVisitsProvider.reset();
// _preventiveMaintenanceVisitsProvider.reset();
_settingProvider.resetSettings();
_userProvider.reset();
Navigator.of(context).pop();
}
},
),
),
Align(
alignment: Alignment.topRight,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
child: AIconButton(
iconData: Icons.menu,
color: AColors.primaryColor,
buttonSize: 42,
backgroundColor: AColors.white,
onPressed: () {
_scaffoldKey.currentState.openEndDrawer();
},
),
),
),
],
),
),
endDrawer: Drawer(
backgroundColor: Colors.white,
child: Column(
children: [
40.height,
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
const Icon(Icons.clear).onPress(() => Navigator.pop(context)),
],
).paddingOnly(start: 4, end: 14),
Row(
children: [
Container(
height: 50 * AppStyle.getScaleFactor(context),
width: 50 * AppStyle.getScaleFactor(context),
padding: EdgeInsets.all(4),
decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle),
child: ClipOval(
child: ClipOval(
child: Icon(
Icons.person,
size: 36,
color: Theme.of(context).colorScheme.primary,
),
),
),
),
12.width,
Text(
_userProvider.user?.userName ?? "??",
style: Theme.of(context).textTheme.headline6.copyWith(
fontWeight: FontWeight.w600,
),
textScaleFactor: AppStyle.getScaleFactor(context),
).expanded
],
).paddingOnly(start: 14, end: 14, top: 21, bottom: 21),
Divider(
height: 1,
thickness: 1,
color: AColors.greyEF,
),
ListView(
children: [
Row(
children: [
Radio(
value: "en",
activeColor: AColors.grey3A,
focusColor: AColors.grey3A,
groupValue: _settingProvider.language,
onChanged: (value) {
_settingProvider.setLanguage(value);
}),
Text(
"English",
style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
textScaleFactor: AppStyle.getScaleFactor(context),
),
Radio(
value: "ar",
activeColor: AColors.grey3A,
focusColor: AColors.grey3A,
groupValue: _settingProvider.language,
onChanged: (value) {
_settingProvider.setLanguage(value);
}),
Text(
"عربي",
style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
textScaleFactor: AppStyle.getScaleFactor(context),
),
],
),
Row(
children: [
Radio(
value: true,
activeColor: AColors.grey3A,
focusColor: AColors.grey3A,
groupValue: _settingProvider.language,
onChanged: (value) {
_settingProvider.setDarkTheme(value);
}),
Text(
"Dark",
style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
textScaleFactor: AppStyle.getScaleFactor(context),
),
Radio(
value: false,
activeColor: AColors.grey3A,
focusColor: AColors.grey3A,
groupValue: _settingProvider.language,
onChanged: (value) {
_settingProvider.setDarkTheme(value);
}),
Text(
"Light",
style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
textScaleFactor: AppStyle.getScaleFactor(context),
),
],
),
// DrawerItem(
// icon: Icons.notifications,
// title: _subtitle.notifications,
// onPressed: () {
// Navigator.of(context).pushNamed(NotificationsPage.id);
// },
// ),
DrawerItem(
icon: Icons.mail,
// title: _subtitle.email,
title: "Email",
onPressed: () {
launch("mailto:customerservice@Test SA.com");
},
),
// DrawerItem(
// icon: Icons.phone_in_talk,
// title: "${_subtitle.hotLine} 15564",
// onPressed: () {
// launch("tel:15564");
// },
// ),
// DrawerItem(
// icon: FontAwesomeIcons.linkedinIn,
// title: _subtitle.linkedIn,
// onPressed: () {
// launch("https://www.linkedin.com/company/Test SA/");
// },
// ),
// DrawerItem(
// icon: FontAwesomeIcons.globe,
// title: _subtitle.ourWebsite,
// onPressed: () {
// launch("https://www.Test SA.com/");
// },
// ),
DrawerItem(
icon: Icons.share,
// title: _subtitle.shareApp,
title: "Share App",
onPressed: () async {
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/";
Share.share(shareLink);
},
),
],
).expanded,
Divider(height: 1, thickness: 1, color: AColors.greyEF),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Powered By Cloud Solutions",
style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12),
textScaleFactor: AppStyle.getScaleFactor(context),
),
6.width,
Image.asset("assets/images/cloud_logo.png", width: 32, height: 32)
],
).paddingOnly(start: 20, end: 20, top: 8, bottom: 8),
// Align(
// alignment: Alignment.topLeft,
// child: ABackButton(
// icon: Icons.power_settings_new_rounded,
// onPressed: () async {
// bool result = await showDialog(
// context: context,
// builder: (_) => const AAlertDialog(
// // title: _subtitle.signOut,
// title: "Sign Out",
// // content: _subtitle.signOutAlert,
// content: "Are you sure you want to exit?",
// ));
// if (result) {
// // _devicesProvider.reset();
// // _departmentsProvider.reset();
// // _serviceRequestsProvider.reset();
// // _regularVisitsProvider.reset();
// // _preventiveMaintenanceVisitsProvider.reset();
// _settingProvider.resetSettings();
// _userProvider.reset();
// Navigator.of(context).pop();
// }
// },
// ),
// ),
// Align(
// alignment: Alignment.topRight,
// child: Padding(
// padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
// child: AIconButton(
// iconData: Icons.menu,
// color: AColors.primaryColor,
// buttonSize: 42,
// backgroundColor: AColors.white,
// onPressed: () {
// _scaffoldKey.currentState.openEndDrawer();
// },
// ),
// ),
// ),
],
),
),
// endDrawer: Drawer(
// backgroundColor: Colors.white,
// child: Column(
// children: [
// 40.height,
// Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// const Icon(Icons.clear).onPress(() => Navigator.pop(context)),
// ],
// ).paddingOnly(start: 4, end: 14),
// Row(
// children: [
// Container(
// height: 50 * AppStyle.getScaleFactor(context),
// width: 50 * AppStyle.getScaleFactor(context),
// padding: EdgeInsets.all(4),
// decoration: BoxDecoration(border: Border.all(color: Theme.of(context).primaryColor, width: 2), shape: BoxShape.circle),
// child: ClipOval(
// child: ClipOval(
// child: Icon(
// Icons.person,
// size: 36,
// color: Theme.of(context).colorScheme.primary,
// ),
// ),
// ),
// ),
// 12.width,
// Text(
// _userProvider.user?.userName ?? "??",
// style: Theme.of(context).textTheme.headline6.copyWith(
// fontWeight: FontWeight.w600,
// ),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ).expanded
// ],
// ).paddingOnly(start: 14, end: 14, top: 21, bottom: 21),
// Divider(
// height: 1,
// thickness: 1,
// color: AColors.greyEF,
// ),
// ListView(
// children: [
// Row(
// children: [
// Radio(
// value: "en",
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setLanguage(value);
// }),
// Text(
// "English",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// Radio(
// value: "ar",
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setLanguage(value);
// }),
// Text(
// "عربي",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// ],
// ),
// Row(
// children: [
// Radio(
// value: true,
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setDarkTheme(value);
// }),
// Text(
// "Dark",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// Radio(
// value: false,
// activeColor: AColors.grey3A,
// focusColor: AColors.grey3A,
// groupValue: _settingProvider.language,
// onChanged: (value) {
// _settingProvider.setDarkTheme(value);
// }),
// Text(
// "Light",
// style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// ],
// ),
// // DrawerItem(
// // icon: Icons.notifications,
// // title: _subtitle.notifications,
// // onPressed: () {
// // Navigator.of(context).pushNamed(NotificationsPage.id);
// // },
// // ),
// DrawerItem(
// icon: Icons.mail,
// // title: _subtitle.email,
// title: "Email",
// onPressed: () {
// launch("mailto:customerservice@Test SA.com");
// },
// ),
// // DrawerItem(
// // icon: Icons.phone_in_talk,
// // title: "${_subtitle.hotLine} 15564",
// // onPressed: () {
// // launch("tel:15564");
// // },
// // ),
// // DrawerItem(
// // icon: FontAwesomeIcons.linkedinIn,
// // title: _subtitle.linkedIn,
// // onPressed: () {
// // launch("https://www.linkedin.com/company/Test SA/");
// // },
// // ),
// // DrawerItem(
// // icon: FontAwesomeIcons.globe,
// // title: _subtitle.ourWebsite,
// // onPressed: () {
// // launch("https://www.Test SA.com/");
// // },
// // ),
// DrawerItem(
// icon: Icons.share,
// // title: _subtitle.shareApp,
// title: "Share App",
// onPressed: () async {
// PackageInfo packageInfo = await PackageInfo.fromPlatform();
// String shareLink = "\n https://play.google.com/store/apps/details?id=" + packageInfo.packageName + "\n https://apps.apple.com/us/app/";
// Share.share(shareLink);
// },
// ),
// ],
// ).expanded,
// Divider(height: 1, thickness: 1, color: AColors.greyEF),
// Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// Text(
// "Powered By Cloud Solutions",
// style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12),
// textScaleFactor: AppStyle.getScaleFactor(context),
// ),
// 6.width,
// Image.asset("assets/images/cloud_logo.png", width: 32, height: 32)
// ],
// ).paddingOnly(start: 20, end: 20, top: 8, bottom: 8),
// ],
// ),
// ),
),
);
}

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

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

@ -50,171 +50,162 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
// _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id);
Widget informationCard() {
return Container(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
StatusLabel(
label: widget.serviceRequest.priority.name,
id: widget.serviceRequest.priority.id,
textColor: AColors.getPriorityStatusTextColor(widget.serviceRequest.priority.id),
backgroundColor: AColors.getPriorityStatusColor(widget.serviceRequest.priority.id)),
8.width,
StatusLabel(
label: widget.serviceRequest.statusLabel,
textColor: AColors.getRequestStatusTextColor(widget.serviceRequest.statusValue),
backgroundColor: AColors.getRequestStatusColor(widget.serviceRequest.statusValue)),
1.width.expanded,
],
),
8.height,
Text(widget.serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
Text(
'${context.translation.assetNumber}: ${widget.serviceRequest.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.requestType}: ${widget.serviceRequest.type.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.requestNo}: ${widget.serviceRequest.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.normal_user)
context.translation.code.toSvgAsset(width: 48).onPress(() {
Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest)));
}),
if (_userProvider.user.type == UsersTypes.engineer) 16.height,
Text(widget.serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
)
],
),
8.height,
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
StatusLabel(
label: widget.serviceRequest.priority.name,
id: widget.serviceRequest.priority.id,
textColor: AColors.getPriorityStatusTextColor(widget.serviceRequest.priority.id),
backgroundColor: AColors.getPriorityStatusColor(widget.serviceRequest.priority.id)),
8.width,
StatusLabel(
label: widget.serviceRequest.statusLabel,
textColor: AColors.getRequestStatusTextColor(widget.serviceRequest.statusValue),
backgroundColor: AColors.getRequestStatusColor(widget.serviceRequest.statusValue)),
1.width.expanded,
],
),
8.height,
Text(widget.serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: context.isDark?AppColor.neutral30: const Color(0xFF3B3D4A))),
8.height,
Text(
'${context.translation.assetNumber}: ${widget.serviceRequest.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
Text(
'${context.translation.requestType}: ${widget.serviceRequest.type.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
Text(
'${context.translation.requestNo}: ${widget.serviceRequest.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.normal_user)
context.translation.code.toSvgAsset(width: 48).onPress(() {
Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: widget.serviceRequest)));
}),
if (_userProvider.user.type == UsersTypes.engineer) 16.height,
Text(widget.serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))),
],
)
],
),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
Text(
'${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
Text(
'${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
8.height,
if ((widget.serviceRequest.callComments ?? "").isNotEmpty) ...[
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
Text(
'${context.translation.manufacture}: ${widget.serviceRequest.device.modelDefinition.manufacturerName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.model}: ${widget.serviceRequest.device.modelDefinition.modelName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
widget.serviceRequest.callComments,
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
],
if (widget.serviceRequest.devicePhotos.isNotEmpty) ...[
8.height,
if ((widget.serviceRequest.callComments ?? "").isNotEmpty) ...[
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
Text(
widget.serviceRequest.callComments,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
if (widget.serviceRequest.devicePhotos.isNotEmpty) ...[
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
FilesList(images: widget.serviceRequest.devicePhotos),
],
if (widget.serviceRequest.audio?.isNotEmpty ?? false) ...[
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
ASoundPlayer(audio: widget.serviceRequest.audio),
],
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
FilesList(images: widget.serviceRequest.devicePhotos),
],
).paddingAll(16),
(_userProvider.user.type == UsersTypes.normal_user
? Container(
height: 50,
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: const ShapeDecoration(
color: Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
),
if (widget.serviceRequest.audio?.isNotEmpty ?? false) ...[
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
ASoundPlayer(audio: widget.serviceRequest.audio),
],
],
).paddingAll(16),
(_userProvider.user.type == UsersTypes.normal_user
? Container(
height: 50,
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: const ShapeDecoration(
color: Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
),
),
child: Row(
),
child: Row(
children: [
Text(
'${context.translation.viewComments}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
),
).expanded,
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
],
),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${context.translation.viewComments}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
),
).expanded,
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
context.translation.viewComments,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewComments,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
],
).paddingOnly(bottom: 16, start: 16, end: 16))
.onPress(() async {
await showModalBottomSheet(
context: context,
useSafeArea: true,
isScrollControlled: true,
backgroundColor: Colors.transparent,
builder: (context) => CommentsBottomSheet(requestId: widget.serviceRequest.id),
);
}),
],
),
);
],
).paddingOnly(bottom: 16, start: 16, end: 16))
.onPress(() async {
await showModalBottomSheet(
context: context,
useSafeArea: true,
isScrollControlled: true,
backgroundColor: Colors.transparent,
builder: (context) => CommentsBottomSheet(requestId: widget.serviceRequest.id),
);
}),
],
).toShadowContainer(context);
}
return Scaffold(
appBar: DefaultAppBar(title: context.translation.serviceDetails),
backgroundColor: const Color(0xfff8f9fb),
//backgroundColor: const Color(0xfff8f9fb),
body: SafeArea(
child: FutureBuilder(
future: _serviceRequestsProvider.getServiceRequestObjectById(requestId: widget.serviceRequest.id),

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

@ -38,7 +38,7 @@ class WorkOrderListPage extends StatelessWidget {
print("serviceRequest.statusValue:${serviceRequest.statusValue}");
return Scaffold(
appBar: DefaultAppBar(title: context.translation.workOrders),
backgroundColor: const Color(0xfff8f9fb),
//backgroundColor: const Color(0xfff8f9fb),
body: SafeArea(
child: FutureBuilder(
future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
@ -56,86 +56,77 @@ class WorkOrderListPage extends StatelessWidget {
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return Container(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height,
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
],
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
})
],
),
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)),
),
Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)),
),
],
).expanded,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
],
).onPress(() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)),
);
}),
],
).paddingAll(16).onPress(() {
// onPressed(request);
}),
],
),
);
return Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height,
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))),
],
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
})
],
),
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)),
),
Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:const Color(0xFF757575)),
),
],
).expanded,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark?AppColor.neutral30:const Color(0xFF3B3D4A))),
],
),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
],
).onPress(() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)),
);
}),
],
).paddingAll(16).onPress(() {
// onPressed(request);
}),
],
).toShadowContainer(context);
},
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3))

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

@ -31,51 +31,42 @@ class VisitDetailsPage extends StatelessWidget {
child: Column(
children: [
SingleChildScrollView(
child: Container(
margin: const EdgeInsets.all(16),
width: double.infinity,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
// StatusLabel(
// label: visit.priority.name,
// id: visit.priority.id,
// textColor: AColors.getPriorityStatusTextColor(visit.priority.id),
// backgroundColor: AColors.getPriorityStatusColor(visit.priority.id)),
// 8.width,
StatusLabel(
label: visit.status.name,
id: visit.status.id,
textColor: AColors.getRequestStatusTextColorByName(visit.status.name),
backgroundColor: AColors.getRequestStatusColorByName(visit.status.name),
),
1.width.expanded,
],
),
8.height,
Text(visit.deviceEnglishName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
Text('${context.translation.assetNumber}: ${visit.deviceNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.assetSN}: ${visit.deviceSerialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.code}: ${visit.serialNumber}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
const Divider().defaultStyle(context),
Text('${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
const Divider().defaultStyle(context),
Text('${context.translation.assignedTo}: ${visit.assignTo}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.engineerName}: ${visit.employName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
Text('${context.translation.site}: ${visit.hospitalName}', style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575))),
],
).paddingAll(16),
),
child: Column(
//mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
// StatusLabel(
// label: visit.priority.name,
// id: visit.priority.id,
// textColor: AColors.getPriorityStatusTextColor(visit.priority.id),
// backgroundColor: AColors.getPriorityStatusColor(visit.priority.id)),
// 8.width,
StatusLabel(
label: visit.status.name,
id: visit.status.id,
textColor: AColors.getRequestStatusTextColorByName(visit.status.name),
backgroundColor: AColors.getRequestStatusColorByName(visit.status.name),
),
1.width.expanded,
],
),
8.height,
visit.deviceEnglishName.heading5(context),
8.height,
'${context.translation.assetNumber}: ${visit.deviceNumber}'.bodyText(context),
'${context.translation.assetSN}: ${visit.deviceSerialNumber}'.bodyText(context),
'${context.translation.code}: ${visit.serialNumber}'.bodyText(context),
const Divider().defaultStyle(context),
'${context.translation.expectDate}: ${visit.expectDate?.toServiceRequestDetailsFormat}'.bodyText(context),
'${context.translation.actualDate}: ${visit.actualDate?.toServiceRequestDetailsFormat}'.bodyText(context),
const Divider().defaultStyle(context),
'${context.translation.assignedTo}: ${visit.assignTo}'.bodyText(context),
'${context.translation.engineerName}: ${visit.employName}'.bodyText(context),
'${context.translation.site}: ${visit.hospitalName}'.bodyText(context),
],
).toShadowContainer(context).paddingAll(16),
).expanded,
if (userProvider.user.type == UsersTypes.engineer && visit.status.id != 270)
AppFilledButton(

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

@ -4,6 +4,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../../extensions/text_extensions.dart';
@ -22,15 +23,10 @@ class DeviceTransferItem extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(context.translation.deviceTransferRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
Text(
'${context.translation.from} : ${item.senderAssignedEmployeeName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.to} : ${item.receiverAssignedEmployeeName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
context.translation.deviceTransferRequest.heading5(context),
'${context.translation.from} : ${item.senderAssignedEmployeeName}'.bodyText(context),
'${context.translation.to} : ${item.receiverAssignedEmployeeName}'.bodyText(context),
8.height,
Row(
mainAxisSize: MainAxisSize.min,
@ -63,7 +59,7 @@ class DeviceTransferItem extends StatelessWidget {
/// TBD
//StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
1.width,
Text(item.createdOn != null ? item.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
Text(item.createdOn != null ? item.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark? AppColor.neutral10 : const Color(0xFF3B3D4A))),
],
),
],

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:signature/signature.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
@ -57,7 +58,7 @@ class _ESignatureState extends State<ESignature> {
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
decoration: BoxDecoration(
color: Colors.white,
color: context.isDark?Theme.of(context).cardColor:Colors.white,
borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),

@ -14,84 +14,74 @@ class AssetItemGridView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(16),
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
return Column(
children: [
AspectRatio(
aspectRatio: 159 / 94,
child: Container(
width: 95,
height: 95,
decoration: ShapeDecoration(
color: const Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
image: DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(device.assetPhoto != null ? URLs.getFileUrl(device.assetPhoto) : "https://www.lasteelcraft.com/images/no-image-available.png"),
)),
),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
children: [
AspectRatio(
aspectRatio: 159 / 94,
child: Container(
width: 95,
height: 95,
decoration: ShapeDecoration(
color: const Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
image: DecorationImage(
fit: BoxFit.cover,
image: NetworkImage(device.assetPhoto != null ? URLs.getFileUrl(device.assetPhoto) : "https://www.lasteelcraft.com/images/no-image-available.png"),
)),
6.height,
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
device.modelDefinition.assetName,
maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF3B3D4A)),
),
),
6.height,
Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
device.modelDefinition.assetName,
maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF3B3D4A)),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
"${context.translation.assetNumber} : ${device.assetNumber}",
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)),
),
Text(
"${context.translation.model} : ${device.modelDefinition.modelDefCode}",
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
"${context.translation.assetNumber} : ${device.assetNumber}",
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)),
),
Text(
"${context.translation.model} : ${device.modelDefinition.modelDefCode}",
style: AppTextStyles.bodyText2.copyWith(color: Color(0xFF757575)),
),
Text(
"${context.translation.serialNo} : ${device.assetSerialNo}",
maxLines: 2,
overflow: TextOverflow.fade,
style: AppTextStyles.bodyText2.copyWith(
color: Color(0xFF757575),
),
Text(
"${context.translation.serialNo} : ${device.assetSerialNo}",
maxLines: 2,
overflow: TextOverflow.fade,
style: AppTextStyles.bodyText2.copyWith(
color: Color(0xFF757575),
),
),
],
),
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
],
).expanded
],
),
).onPress(() => onPressed(device));
),
],
),
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'View Details',
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
],
).expanded
],
).onPress(() => onPressed(device)).toShadowContainer(context);
}
}

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

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

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

@ -1,8 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../../../new_views/app_style/app_color.dart';
class LandPageItem extends StatelessWidget {
final String text;
final IconData icon;
@ -14,40 +18,26 @@ class LandPageItem extends StatelessWidget {
Widget build(BuildContext context) {
return InkWell(
onTap: onPressed,
child: Container(
padding: const EdgeInsets.only(left: 20, right: 20, bottom: 15, top: 28),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
boxShadow: [
BoxShadow(
color: const Color(0xff000000).withOpacity(.15),
blurRadius: 26,
offset: const Offset(0, -3),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
if (icon != null)
Icon(
icon,
color: AColors.primaryColor,
size: 42 * AppStyle.getScaleFactor(context),
),
if (svgPath != null)
SvgPicture.asset(
svgPath,
width: 42 * AppStyle.getScaleFactor(context),
height: 42 * AppStyle.getScaleFactor(context),
color: AColors.primaryColor,
),
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
if (icon != null)
Icon(
icon,
color: AColors.primaryColor,
size: 42 * AppStyle.getScaleFactor(context),
),
if (svgPath != null)
SvgPicture.asset(
svgPath,
width: 42 * AppStyle.getScaleFactor(context),
height: 42 * AppStyle.getScaleFactor(context),
color: AColors.primaryColor,
),
Text(text, style: const TextStyle(color: AColors.grey3A)),
],
),
),
Text(text, style: TextStyle(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,)),
],
).toShadowContainer(context),
);
}
}

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

@ -16,6 +16,8 @@ import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../new_views/app_style/app_color.dart';
class ServiceRequestItem extends StatelessWidget {
final int index;
final ServiceRequest request;
@ -31,74 +33,65 @@ class ServiceRequestItem extends StatelessWidget {
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return Container(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StatusLabel(
label: request.priority.name,
id: request.priority.id,
textColor: AColors.getPriorityStatusTextColor(request.priority.id),
backgroundColor: AColors.getPriorityStatusColor(request.priority.id)),
8.width,
StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)),
1.width.expanded,
Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
),
8.height,
Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
Text(
'${context.translation.assetName}: ${request.deviceEnName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.assetNumber}: ${request.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.requestType}: ${request.type.name}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.requestNo}: ${request.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
],
).paddingAll(16).onPress(() {
onPressed(request);
}),
],
),
return Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StatusLabel(
label: request.priority.name,
id: request.priority.id,
textColor: AColors.getPriorityStatusTextColor(request.priority.id),
backgroundColor: AColors.getPriorityStatusColor(request.priority.id)),
8.width,
StatusLabel(label: request.statusLabel, textColor: AColors.getRequestStatusTextColor(request.statusValue), backgroundColor: AColors.getRequestStatusColor(request.statusValue)),
1.width.expanded,
Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark? AppColor.neutral30:const Color(0xFF3B3D4A))),
],
),
8.height,
Text(context.translation.serviceRequest, style: AppTextStyles.heading5.copyWith(color: context.isDark? AppColor.neutral30:const Color(0xFF3B3D4A))),
Text(
'${context.translation.assetName}: ${request.deviceEnName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
Text(
'${context.translation.assetNumber}: ${request.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
Text(
'${context.translation.requestType}: ${request.type.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
Text(
'${context.translation.requestNo}: ${request.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark?AppColor.neutral10:Color(0xFF757575)),
),
8.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
],
),
],
).paddingAll(16).onPress(() {
onPressed(request);
}).toShadowContainer(context),
],
);
}
}

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

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

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

Loading…
Cancel
Save