Change Chart Design && Update dark theme colors

design_3.0_demo_module
zaid_daoud 3 years ago
parent 7418e8d937
commit 9e2baae2e2

@ -1,6 +1,5 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:test_sa/views/app_style/colors.dart';
class NotificationManger {
// private constructor to avoid create object
@ -27,8 +26,8 @@ class NotificationManger {
}
// push new notification
static Future showNotification({@required String title, @required String subtext, @required int hashcode, String payload}) async {
const AndroidNotificationDetails androidChannel = AndroidNotificationDetails(
static Future showNotification({@required BuildContext context, @required String title, @required String subtext, @required int hashcode, String payload}) async {
final AndroidNotificationDetails androidChannel = AndroidNotificationDetails(
'com.newtrack.testsa',
'Test SA',
channelDescription: 'Push notification service for Test SA',
@ -38,7 +37,7 @@ class NotificationManger {
channelShowBadge: true,
enableLights: true,
visibility: NotificationVisibility.public,
ledColor: AColors.secondaryColor,
ledColor: Theme.of(context).colorScheme.secondary,
ledOnMs: 1,
ledOffMs: 0,
enableVibration: true,
@ -49,7 +48,7 @@ class NotificationManger {
categoryIdentifier: "testSA",
);
const platformChannel = NotificationDetails(
final platformChannel = NotificationDetails(
android: androidChannel,
iOS: iosNotificationDetails,
macOS: iosNotificationDetails,

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../models/size_config.dart';
@ -8,8 +7,6 @@ extension IntExtensions on int {
Widget get width => SizedBox(width: toScreenWidth);
Widget get divider => Divider(height: toScreenHeight, thickness: toScreenHeight, color: AppColor.neutral30);
Widget get makeItSquare => SizedBox(width: toScreenWidth, height: toScreenWidth);
double get toScreenHeight => (this / 932) * SizeConfig.screenHeight;

@ -12,6 +12,8 @@ extension WidgetExtensions on Widget {
Widget get center => Center(child: this);
BoxShadow get boxShadowR14 => BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14, offset: const Offset(0, 0), spreadRadius: 0);
Widget circle(double value) => ClipRRect(borderRadius: BorderRadius.circular(value), child: this);
Widget paddingAll(double value) => Padding(padding: EdgeInsets.all(value), child: this);
@ -52,20 +54,12 @@ extension WidgetExtensions on Widget {
? Container(
padding: EdgeInsets.all(padding),
decoration: ShapeDecoration(
color: Theme.of(context).cardColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
shadows: const [
BoxShadow(
color: Color(0x07000000),
blurRadius: 14,
offset: Offset(0, 0),
spreadRadius: 0,
)
],
color: AppColor.background(context),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
shadows: [boxShadowR14],
),
child: this)
child: this,
)
: this;
}

@ -370,5 +370,6 @@
"vendorName" : "اسم المزود",
"reset" : "اعادة تعيين",
"solution" : "الحل",
"technicalComment" : "تعليق تقني"
"technicalComment" : "تعليق تقني",
"recentActivities" : "الأنشطة الحالية"
}

@ -373,5 +373,6 @@
"vendorName" : "Vendor Name",
"reset" : "Reset",
"solution" : "Solution",
"technicalComment" : "Technical Comment"
"technicalComment" : "Technical Comment",
"recentActivities" : "Recent Activities"
}

@ -1,4 +1,5 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
class AppColor {
AppColor._();
@ -37,4 +38,103 @@ class AppColor {
static const Color orange40 = Color(0xffFFEDBC);
static const Color orange50 = Color(0xffCC9B14);
static const Color orange60 = Color(0xff886400);
static Color greenStatus(BuildContext context) => context.isDark ? const Color(0xff1FA269) : green50;
static Color blueStatus(BuildContext context) => context.isDark ? primary40 : primary50;
static Color redStatus(BuildContext context) => context.isDark ? const Color(0xffFFB6B8) : red50;
static Color yellowStatus(BuildContext context) => context.isDark ? const Color(0xffFFDA76) : orange40;
static Color background(BuildContext context) => context.isDark ? neutral60 : Colors.white;
static Color selectedButtonColor(BuildContext context) => context.isDark ? neutral60 : neutral30;
static Color unSelectedButtonColor(BuildContext context) => context.isDark ? neutral60 : Colors.white;
static Color filterButtonTextColor(BuildContext context) => context.isDark ? neutral30 : neutral50;
static Color getRequestStatusTextColorByName(BuildContext context, String status) {
switch ((status ?? "").toLowerCase()) {
case "in progress":
return orange60;
case "high priority":
return red60;
default:
return Colors.white;
}
}
static Color getRequestStatusColorByName(BuildContext context, String status) {
switch ((status ?? "").toLowerCase()) {
case "medium":
return blueStatus(context);
case "in progress":
return yellowStatus(context);
case "complete":
return greenStatus(context);
case "closed":
return greenStatus(context);
case "high priority":
return redStatus(context);
case "low priority":
return greenStatus(context);
case "open":
return blueStatus(context);
default:
return greenStatus(context);
}
}
static Color getRequestStatusColor(BuildContext context, int id) {
switch (id) {
case 1:
return blueStatus(context);
case 2:
return yellowStatus(context);
case 3:
return greenStatus(context);
case 4:
return redStatus(context);
case 6:
return greenStatus(context);
case 5:
return greenStatus(context);
case 8:
return greenStatus(context);
case 9:
return orange40;
default:
return blueStatus(context);
}
}
static Color getRequestStatusTextColor(BuildContext context, int id) {
switch (id) {
case 2:
return orange60;
case 4:
return red60;
case 9:
return orange60;
default:
return Colors.white;
}
}
static Color getPriorityStatusTextColor(BuildContext context, int id) {
switch (id) {
case 81:
return Colors.white;
case 82:
return red60;
default:
return blueStatus(context);
}
}
static Color getPriorityStatusColor(BuildContext context, int id) {
switch (id) {
case 81:
return greenStatus(context);
case 82:
return redStatus(context);
default:
return blueStatus(context);
}
}
}

@ -43,7 +43,7 @@ class AppThemes {
elevation: 0,
iconSize: 46,
backgroundColor: AppColor.primary40,
foregroundColor: AppColor.neutral50,
foregroundColor: AppColor.backgroundDark,
),
bottomNavigationBarTheme: BottomNavigationBarThemeData(
type: BottomNavigationBarType.fixed,

@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
@ -12,11 +12,7 @@ class AppBottomNavigationBar extends StatelessWidget {
final Function(int index) onPressed;
final int selectedIndex;
const AppBottomNavigationBar({
Key key,
@required this.onPressed,
@required this.selectedIndex,
}) : super(key: key);
const AppBottomNavigationBar({Key key, @required this.onPressed, @required this.selectedIndex}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -25,16 +21,9 @@ class AppBottomNavigationBar extends StatelessWidget {
borderRadius: const BorderRadius.only(topLeft: Radius.circular(20.0), topRight: Radius.circular(20.0)),
child: Container(
height: 100.toScreenHeight,
decoration: const BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
color: Color(0x0C000000),
blurRadius: 14,
offset: Offset(0, 0),
spreadRadius: 0,
)
],
decoration: BoxDecoration(
color: AppColor.background(context),
boxShadow: [boxShadowR14],
),
child: BottomNavigationBar(
items: <BottomNavigationBarItem>[
@ -46,10 +35,10 @@ class AppBottomNavigationBar extends StatelessWidget {
],
currentIndex: selectedIndex,
onTap: onPressed,
selectedLabelStyle: AppTextStyles.tinyFont.copyWith(fontSize: 11),
unselectedLabelStyle: AppTextStyles.tinyFont.copyWith(fontSize: 11),
selectedItemColor: AppColor.primary70,
unselectedItemColor: const Color(0xFF757575),
selectedLabelStyle: AppTextStyles.tinyFont,
unselectedLabelStyle: AppTextStyles.tinyFont,
selectedItemColor: Theme.of(context).bottomNavigationBarTheme.selectedItemColor,
unselectedItemColor: Theme.of(context).bottomNavigationBarTheme.unselectedItemColor,
),
),
);
@ -57,14 +46,12 @@ class AppBottomNavigationBar extends StatelessWidget {
BottomNavigationBarItem navBarItem(BuildContext context, {@required int index, @required String iconName, @required String label}) {
return BottomNavigationBarItem(
icon: Padding(
padding: EdgeInsets.symmetric(vertical: 10.toScreenHeight),
child: SvgPicture.asset(
'assets/images/$iconName.svg',
width: 24.toScreenWidth,
color: selectedIndex == index ? Theme.of(context).bottomNavigationBarTheme.selectedItemColor : Theme.of(context).bottomNavigationBarTheme.unselectedItemColor,
),
),
icon: iconName
?.toSvgAsset(
width: 24,
color: selectedIndex == index ? Theme.of(context).bottomNavigationBarTheme.selectedItemColor : Theme.of(context).bottomNavigationBarTheme.unselectedItemColor,
)
?.paddingOnly(top: 10, bottom: 10),
label: label,
);
}

@ -18,7 +18,7 @@ class AppDashedButton extends StatelessWidget {
return Container(
width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: 2.toScreenWidth),
decoration: BoxDecoration(color: Theme.of(context).cardColor, borderRadius: BorderRadius.circular(10)),
decoration: BoxDecoration(color: AppColor.background(context), borderRadius: BorderRadius.circular(10)),
child: DottedBorder(
strokeWidth: 2,
padding: EdgeInsets.symmetric(vertical: 16.toScreenHeight, horizontal: 16.toScreenWidth),

@ -59,7 +59,7 @@ class AppDrawer extends StatelessWidget {
(userProvider.user?.username ?? "").heading3(context).custom(fontWeight: FontWeight.w600),
if ((userProvider.user?.email ?? "").isNotEmpty) (userProvider.user?.email).heading6(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
18.height,
1.divider,
const Divider().defaultStyle(context),
ListView(
// "settings" : " Settings",
// "ReportBug " : "Report a bug",
@ -99,7 +99,7 @@ class AppDrawer extends StatelessWidget {
}
}),
18.height,
1.divider,
const Divider().defaultStyle(context),
18.height,
Row(
mainAxisAlignment: MainAxisAlignment.center,

@ -1,5 +1,4 @@
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';
@ -28,11 +27,8 @@ class AppFilledButton extends StatelessWidget {
height: 56.toScreenHeight,
width: maxWidth ? double.infinity : null,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: buttonColor ?? Theme.of(context).primaryColor,
),
child: label.heading6(context).custom(color: textColor ?? (context.isDark ? AppColor.neutral60 : Colors.white)),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(10), color: buttonColor ?? AppColor.blueStatus(context)),
child: label.heading6(context).custom(color: textColor ?? AppColor.background(context)),
).onPress(onPressed);
}
}

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
@ -36,55 +35,55 @@ class _AppFloatingActionButtonState extends State<AppFloatingActionButton> {
@override
Widget build(BuildContext context) {
final user = Provider.of<UserProvider>(context, listen: false).user;
final elements = [
if (user.type == UsersTypes.normal_user) fabItem(context.translation.gasRefillRequest, "gas_refill_request", NewGasRefillRequestPage.routeName),
if (user.type == UsersTypes.normal_user) const Divider().defaultStyle(context).paddingOnly(top: 16, bottom: 16),
fabItem(context.translation.transferRequest, "transfer_request", RequestDeviceTransfer.id),
const Divider().defaultStyle(context).paddingOnly(top: 16, bottom: 16),
fabItem(context.translation.serviceRequest, "service_request", CreateServiceRequestPage.id),
];
const duration = Duration(milliseconds: 250);
return Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.min,
children: [
Visibility(
visible: turns != 0,
maintainAnimation: true,
maintainState: true,
child: AnimatedOpacity(
opacity: turns != 0 ? 1 : 0,
duration: duration,
child: Container(
width: MediaQuery.of(context).size.width * .66,
padding: EdgeInsets.all(16),
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
return elements.isEmpty
? const SizedBox.shrink()
: Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisSize: MainAxisSize.min,
children: [
Visibility(
visible: turns != 0,
maintainAnimation: true,
maintainState: true,
child: AnimatedOpacity(
opacity: turns != 0 ? 1 : 0,
duration: duration,
child: Container(
width: MediaQuery.of(context).size.width * .66,
padding: const EdgeInsets.all(16),
decoration: ShapeDecoration(
color: AppColor.background(context),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
// shadows: const [BoxShadow(color: Color(0x0C000000), blurRadius: 10, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(mainAxisSize: MainAxisSize.min, children: elements),
),
),
shadows: const [BoxShadow(color: Color(0x0C000000), blurRadius: 10, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
if (user.type == UsersTypes.normal_user) fabItem(context.translation.gasRefillRequest, "gas_refill_request", NewGasRefillRequestPage.routeName),
if (user.type == UsersTypes.normal_user) 1.divider.paddingOnly(top: 16, bottom: 16),
fabItem(context.translation.transferRequest, "transfer_request", RequestDeviceTransfer.id),
if (user.type == UsersTypes.normal_user) 1.divider.paddingOnly(top: 16, bottom: 16),
if (user.type == UsersTypes.normal_user) fabItem(context.translation.serviceRequest, "service_request", CreateServiceRequestPage.id),
],
16.height,
FloatingActionButton(
child: AnimatedRotation(
turns: turns,
duration: duration,
child: const Icon(Icons.add),
),
onPressed: () {
_rotate();
},
),
),
),
),
16.height,
FloatingActionButton(
child: AnimatedRotation(
turns: turns,
duration: duration,
child: const Icon(Icons.add),
),
onPressed: () {
_rotate();
},
),
],
);
],
);
}
Widget fabItem(String label, String iconName, routeName) {
@ -93,21 +92,12 @@ class _AppFloatingActionButtonState extends State<AppFloatingActionButton> {
children: [
Expanded(
flex: 4,
child: Text(
label,
textAlign: TextAlign.center,
style: AppTextStyles.heading5.copyWith(color: AppColor.neutral50),
),
child: label.heading5(context),
),
// 4.width,
Expanded(
flex: 1,
child: SvgPicture.asset(
"assets/images/$iconName.svg",
height: 24.toScreenHeight,
width: 24.toScreenWidth,
color: context.isDark ? AppColor.primary40 : AppColor.primary70,
),
child: iconName.toSvgAsset(width: 24, height: 24, color: AppColor.blueStatus(context)),
)
],
).onPress(() {

@ -29,32 +29,32 @@ class AppTextFormField extends StatefulWidget {
final bool alignLabelWithHint;
final bool showShadow;
const AppTextFormField(
{Key key,
this.onSaved,
this.validator,
this.node,
this.onChange,
this.obscureText,
this.showPassword,
this.hintText,
this.labelText,
this.textInputType = TextInputType.text,
this.initialValue,
this.enable = true,
this.style,
this.textAlign,
this.suffixIcon,
this.prefixIcon,
this.prefixIconData,
this.prefixIconSize,
this.controller,
this.textInputAction,
this.onAction,
this.backgroundColor,
this.showShadow = true,
this.alignLabelWithHint})
: super(key: key);
const AppTextFormField({
Key key,
this.onSaved,
this.validator,
this.node,
this.onChange,
this.obscureText,
this.showPassword,
this.hintText,
this.labelText,
this.textInputType = TextInputType.text,
this.initialValue,
this.enable = true,
this.style,
this.textAlign,
this.suffixIcon,
this.prefixIcon,
this.prefixIconData,
this.prefixIconSize,
this.controller,
this.textInputAction,
this.onAction,
this.backgroundColor,
this.showShadow = true,
this.alignLabelWithHint,
}) : super(key: key);
@override
State<AppTextFormField> createState() => _AppTextFormFieldState();
@ -103,10 +103,10 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
filled: true,
fillColor: widget.backgroundColor ??
(context.isDark && (widget.enable == false)
? AppColor.neutral60
? AppColor.neutral50
: (widget.enable == false)
? AppColor.neutral40
: Theme.of(context).cardColor),
: AppColor.background(context)),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60),
floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20),
hintText: widget.hintText ?? "",

@ -100,10 +100,10 @@ class _SingleItemDropDownMenuState<T extends Base, X extends LoadingListNotifier
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
decoration: BoxDecoration(
color: context.isDark && (widget.enabled == false || isEmpty)
? AppColor.neutral60
? AppColor.neutral50
: (widget.enabled == false || isEmpty)
? AppColor.neutral40
: widget.backgroundColor ?? Theme.of(context).cardColor,
: widget.backgroundColor ?? AppColor.background(context),
borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),

@ -49,14 +49,16 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
16.height,
Container(
margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(color: context.isDark ? AppColor.neutral10 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
decoration: BoxDecoration(color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar(
controller: _tabController,
padding: EdgeInsets.zero,
labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20,
labelColor: context.isDark ? AppColor.neutral30 : AppColor.neutral60,
unselectedLabelColor: context.isDark ? AppColor.neutral10 : AppColor.neutral20,
unselectedLabelStyle: AppTextStyles.bodyText,
labelStyle: AppTextStyles.bodyText,
indicatorPadding: const EdgeInsets.all(4),
indicator: BoxDecoration(color: context.isDark ? AppColor.neutral20 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
indicator: BoxDecoration(color: context.isDark ? AppColor.neutral60 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
onTap: (index) {
setState(() {});
},

@ -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';
@ -12,7 +13,7 @@ class CalendarDaysCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
final bgColor = fill ? AppColor.primary40.withOpacity(0.3) : AppColor.neutral30;
final bgColor = fill ? AppColor.primary40.withOpacity(context.isDark ? 0.4 : 0.3) : AppColor.neutral30;
final dotColor = fill ? AppColor.primary40 : AppColor.green50;
return SizedBox(
height: 45.toScreenWidth,
@ -24,7 +25,7 @@ class CalendarDaysCard extends StatelessWidget {
width: 37.toScreenWidth,
alignment: Alignment.center,
decoration: BoxDecoration(shape: BoxShape.circle, color: bgColor),
child: day.bodyText(context).custom(color: AppColor.neutral50),
child: day.bodyText(context).custom(color: fill && context.isDark ? AppColor.neutral40 : AppColor.neutral50),
),
if (fill)
PositionedDirectional(

@ -88,7 +88,7 @@ class _MonthlyFragmentState extends State<MonthlyFragment> {
calendarStyle: CalendarStyle(
isTodayHighlighted: false,
defaultTextStyle: AppTextStyles.bodyText,
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
defaultDecoration: BoxDecoration(shape: BoxShape.circle, color: context.isDark ? AppColor.neutral50 : AppColor.neutral30),
),
),
),

@ -8,10 +8,9 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/land_page/widgets/request_item_view_list.dart';
import 'package:test_sa/views/app_style/colors.dart';
class ProgressFragment extends StatelessWidget {
ProgressFragment({Key key}) : super(key: key);
const ProgressFragment({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -32,17 +31,33 @@ class ProgressFragment extends StatelessWidget {
dataMap: statuses,
animationDuration: const Duration(milliseconds: 500),
chartRadius: 190.toScreenWidth,
colorList: [AColors.statusGreen, AColors.statusBlue, AColors.statusYellowLight],
colorList: [
AppColor.greenStatus(context),
AppColor.yellowStatus(context),
AppColor.blueStatus(context),
],
initialAngleInDegree: 270,
chartType: ChartType.ring,
ringStrokeWidth: 40.toScreenWidth,
centerText: "${context.translation.total}\n$total",
centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
sideTextStyle: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
centerWidget: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.total,
style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
Text(
"$total",
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
),
legendOptions: const LegendOptions(showLegends: false),
chartValuesOptions: ChartValuesOptions(
chartValueBackgroundColor: Colors.white,
chartValueBackgroundColor: Theme.of(context).scaffoldBackgroundColor,
showChartValuesInPercentage: true,
chartValueStyle: AppTextStyles.heading6.copyWith(color: AppColor.neutral20),
chartValueStyle: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral60),
showChartValuesOutside: true,
),
).toShimmer(isShow: snapshot.isOpenLoading || snapshot.isInProgressLoading || snapshot.isCompleteLoading, radius: 300).paddingAll(12).toShadowContainer(context),
@ -53,16 +68,16 @@ class ProgressFragment extends StatelessWidget {
children: <Widget>[
Container(
margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
decoration: BoxDecoration(color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar(
//controller: _tabController,
padding: EdgeInsets.zero,
labelColor: AppColor.neutral60,
unselectedLabelColor: AppColor.neutral20,
unselectedLabelStyle: AppTextStyles.bodyText.copyWith(color: const Color(0xFF757575)),
labelStyle: AppTextStyles.bodyText.copyWith(color: AppColor.neutral60),
labelColor: context.isDark ? AppColor.neutral30 : AppColor.neutral60,
unselectedLabelColor: context.isDark ? AppColor.neutral10 : AppColor.neutral20,
unselectedLabelStyle: AppTextStyles.bodyText,
labelStyle: AppTextStyles.bodyText,
indicatorPadding: const EdgeInsets.all(4),
indicator: BoxDecoration(color: context.isDark ? AppColor.neutral20 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
indicator: BoxDecoration(color: context.isDark ? AppColor.neutral60 : Theme.of(context).cardColor, borderRadius: BorderRadius.circular(13)),
onTap: (index) {
// setState(() {});
},

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/notifications_provider.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
@ -19,30 +19,21 @@ class RecentActivitiesFragment extends StatelessWidget {
padding: const EdgeInsets.all(16),
child: 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,
)
],
color: AppColor.background(context),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
shadows: [boxShadowR14],
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Recent Activities", style: AppTextStyles.heading5.copyWith(color: AppColor.neutral50)).paddingOnly(top: 16, start: 16, end: 16),
context.translation.recentActivities.heading5(context).paddingOnly(top: 16, start: 16, end: 16),
ListView.separated(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
padding: const EdgeInsets.all(16),
itemCount: _notificationsProvider.notifications.length,
separatorBuilder: (context, itemIndex) => 1.divider.paddingOnly(top: 16, bottom: 16),
separatorBuilder: (context, itemIndex) => const Divider().defaultStyle(context).paddingOnly(top: 16, bottom: 16),
itemBuilder: (context, itemIndex) {
// todo add priority & progress tag to show chip
return NotificationItem(

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
@ -11,7 +10,7 @@ import 'package:test_sa/new_views/common_widgets/app_floating_action_button.dart
import 'package:test_sa/new_views/pages/land_page/requests_list_page.dart';
class RequestsFragment extends StatelessWidget {
RequestsFragment({Key key}) : super(key: key);
const RequestsFragment({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -23,17 +22,17 @@ class RequestsFragment extends StatelessWidget {
padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 191 / 237, crossAxisSpacing: 16, mainAxisSpacing: 16),
children: [
gridItem(snapshot.highPriorityRequests?.total?.count?.toString() ?? "-", "high_priority", context.translation.highPriority, context, snapshot.isHighPriorityLoading, 0),
gridItem(snapshot.overdueRequests?.total?.count?.toString() ?? "-", "overdue", context.translation.overdue, context, snapshot.isOverdueLoading, 1),
gridItem(snapshot.openRequests?.total?.count?.toString() ?? "-", "new_request", context.translation.newR, context, snapshot.isOpenLoading, 2),
gridItem(snapshot.completedRequests?.total?.count?.toString() ?? "-", "complete_request", context.translation.completed, context, snapshot.isCompleteLoading, 3),
gridItem(snapshot.highPriorityRequests?.total?.count, "high_priority", context.translation.highPriority, context, snapshot.isHighPriorityLoading, 0, AppColor.redStatus(context)),
gridItem(snapshot.overdueRequests?.total?.count, "overdue", context.translation.overdue, context, snapshot.isOverdueLoading, 1, AppColor.yellowStatus(context)),
gridItem(snapshot.openRequests?.total?.count, "new_request", context.translation.newR, context, snapshot.isOpenLoading, 2, AppColor.primary40),
gridItem(snapshot.completedRequests?.total?.count, "complete_request", context.translation.completed, context, snapshot.isCompleteLoading, 3, AppColor.greenStatus(context)),
],
),
),
);
}
Widget gridItem(String value, String icon, String title, BuildContext context, bool isLoading, int index) {
Widget gridItem(int value, String icon, String title, BuildContext context, bool isLoading, int index, Color iconColor) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -41,11 +40,11 @@ class RequestsFragment extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
value,
value?.toString() ?? "-",
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),
(icon ?? "").toSvgAsset(height: 48, width: 48, color: iconColor)?.toShimmer(isShow: isLoading),
],
).expanded,
Text(
@ -60,12 +59,12 @@ class RequestsFragment extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.primary40 : AppColor.primary50),
),
4.width,
const Icon(
Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
color: context.isDark ? AppColor.primary40 : AppColor.primary50,
size: 14,
)
],

@ -43,7 +43,7 @@ class _DashboardPageState extends State<DashboardPage> {
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
backgroundColor: context.isDark ? AppColor.neutral70 : Color(0xffF8F9FB),
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
titleSpacing: 0,
title: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -52,7 +52,7 @@ class _DashboardPageState extends State<DashboardPage> {
Consumer<UserProvider>(builder: (context, snapshot, _) {
return CircleAvatar(
radius: 24,
backgroundColor: const Color(0xFFE4E5E6),
backgroundColor: context.isDark ? AppColor.neutral50 : AppColor.neutral40,
child: Padding(
padding: const EdgeInsets.all(1), // Border radius
child: ClipOval(
@ -60,11 +60,7 @@ class _DashboardPageState extends State<DashboardPage> {
? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon(
Icons.person,
size: 24,
color: Colors.white,
),
: const Icon(Icons.person, size: 24, color: Colors.white),
),
),
);
@ -72,11 +68,7 @@ class _DashboardPageState extends State<DashboardPage> {
Stack(
alignment: Alignment.topRight,
children: [
const Icon(
Icons.notifications,
color: Color(0xff767676),
size: 30,
).paddingOnly(top: 6, end: 0),
Icon(Icons.notifications, color: context.isDark ? AppColor.neutral30 : AppColor.neutral20, size: 30).paddingOnly(top: 6, end: 0),
// todo @sikander will add count for unread notifications
// Positioned(
// top: 0,
@ -121,10 +113,7 @@ class _DashboardPageState extends State<DashboardPage> {
3.width,
indicatorView(2),
10.width,
Text(
"0${_currentPage + 1}/03",
style: Theme.of(context).textTheme.labelMedium?.copyWith(fontWeight: FontWeight.w500),
),
"0${_currentPage + 1}/03".tinyFont(context).custom(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral30 : AppColor.neutral60),
],
),
],
@ -132,8 +121,8 @@ class _DashboardPageState extends State<DashboardPage> {
PageView(
onPageChanged: (index) => setState(() => _currentPage = index),
children: [
RequestsFragment(),
ProgressFragment(),
const RequestsFragment(),
const ProgressFragment(),
RecentActivitiesFragment(),
],
).expanded,
@ -149,7 +138,13 @@ class _DashboardPageState extends State<DashboardPage> {
duration: const Duration(milliseconds: 250),
width: (isActive ? 30 : 12).toScreenWidth,
height: 9.toScreenHeight,
decoration: BoxDecoration(color: isActive ? AppColor.green50 : AppColor.neutral40, borderRadius: BorderRadius.circular(8)),
decoration: BoxDecoration(
color: isActive
? AppColor.greenStatus(context)
: context.isDark
? AppColor.neutral20
: AppColor.neutral40,
borderRadius: BorderRadius.circular(8)),
);
}
}

@ -45,7 +45,7 @@ class _LandPageState extends State<LandPage> {
_scaffoldKey.currentState.isDrawerOpen ? _scaffoldKey.currentState.closeDrawer() : _scaffoldKey.currentState.openDrawer();
})),
// const old_page.LandPage(),
MyRequestsPage(),
const MyRequestsPage(),
const MyAssetsPage(fromBottomBar: true),
if (_userProvider.user.type == UsersTypes.engineer) const CalendarPage(),
];

@ -5,6 +5,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/search_all_requests_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/new_views/pages/land_page/widgets/static_filter_buttons.dart';
@ -75,7 +76,7 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
).paddingAll(8).onPress(() {
setState(() {
search.statuses?.clear();

@ -65,7 +65,7 @@ class _AllRequestsSearchPageState extends State<AllRequestsSearchPage> {
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
// style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() {
setState(() {
search.requestNumber?.controller?.text = "";

@ -52,20 +52,18 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
padding: const EdgeInsets.only(left: 16, right: 8),
alignment: Alignment.center,
decoration: ShapeDecoration(
color: context.isDark ? Color(0xFF3B3D4A) : Color(0xFFEAF1F4),
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
),
child: Row(
children: [
const Icon(Icons.search, color: Color(0xFF757575), size: 16),
Icon(Icons.search, color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, size: 19),
8.width,
Text(
context.translation.search,
style: AppTextStyles.bodyText.copyWith(
color: const Color(0xFF757575),
),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
).expanded,
],
),
@ -79,7 +77,7 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
16.width,
Text(
context.translation.filter,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
).onPress(() async {
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AllRequestsFilterPage(data: _search)));
if (result != null) {
@ -94,29 +92,31 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
children: [
if (_filterIsEmpty())
SizedBox(
height: 34 + 16.0,
height: 50.toScreenHeight,
child: ListView.separated(
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.only(top: 16, right: 16, left: 16),
itemBuilder: (cxt, index) => Container(
alignment: Alignment.center,
padding: const EdgeInsets.symmetric(horizontal: 8),
foregroundDecoration: selectedRequest != index
? null
: ShapeDecoration(
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(0.1),
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: AppColor.blueStatus(context)),
borderRadius: BorderRadius.circular(7),
),
),
decoration: ShapeDecoration(
color: selectedRequest == index ? Color(0xFFEAF1F4) : Colors.white,
color: selectedRequest == index ? AppColor.selectedButtonColor(context) : AppColor.unSelectedButtonColor(context),
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: selectedRequest == index ? Color(0xFF4A8DB7) : Colors.white),
side: selectedRequest == index ? BorderSide(width: 1, color: AppColor.blueStatus(context)) : BorderSide.none,
borderRadius: BorderRadius.circular(7),
),
shadows: const [
BoxShadow(
color: Color(0x07000000),
blurRadius: 14,
offset: Offset(0, 0),
spreadRadius: 0,
)
],
shadows: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14, offset: const Offset(0, 0), spreadRadius: 0)],
),
child: Text(requestsList[index], style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral20 : AppColor.neutral50, height: 1)),
child: Text(requestsList[index], style: AppTextStyles.bodyText2.copyWith(height: 1, color: AppColor.filterButtonTextColor(context))),
).onPress(() {
if (selectedRequest != index) {
setState(() {

@ -6,9 +6,10 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../../views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart';
class AssetItemView extends StatelessWidget {
final RequestsDetails request;
@ -26,16 +27,20 @@ class AssetItemView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (request.priority != null)
StatusLabel(label: request.priority ?? "", textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)),
8.width,
//if(request.status != null)
// StatusLabel(
// label: request.status??",
// textColor: AColors.getRequestStatusTextColorByName(request.status),
// backgroundColor: AColors.getRequestStatusColorByName(request.status),
// ),
StatusLabel(
label: request.priority ?? "",
textColor: AppColor.getRequestStatusTextColorByName(context, request.priority),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.priority),
),
// 8.width,
// if (request.status != null)
// StatusLabel(
// label: request.status ?? "",
// textColor: AppColor.getRequestStatusTextColorByName(context, request.status),
// backgroundColor: AppColor.getRequestStatusColorByName(context, request.status),
// ),
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.neutral10 : AppColor.neutral50)),
],
),
8.height,
@ -43,23 +48,10 @@ class AssetItemView extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
"Device Transfer Request",
maxLines: 2,
style: AppTextStyles.heading5.copyWith(color: Color(0xFF3B3D4A)),
),
Text(
"${context.translation.from} : ${request.siteTransferFrom}",
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
"${context.translation.to} : ${request.siteTransferTo}",
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
"${request.status.replaceAll("=", ":")}",
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
context.translation.deviceTransferRequest.heading5(context),
"${context.translation.from} : ${request.siteTransferFrom}".bodyText(context),
"${context.translation.to} : ${request.siteTransferTo}".bodyText(context),
request.status.replaceAll("=", ":").bodyText(context),
],
),
Row(
@ -67,12 +59,12 @@ class AssetItemView extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(
Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
color: AppColor.blueStatus(context),
size: 14,
)
],

@ -6,10 +6,9 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/new_models/gas_refill_model.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../../views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart';
class GasRefillItemView extends StatelessWidget {
@ -28,18 +27,17 @@ class GasRefillItemView extends StatelessWidget {
children: [
StatusLabel(
label: request.priority,
// id: ,
textColor: AColors.getRequestStatusTextColorByName(request.priority),
backgroundColor: AColors.getRequestStatusColorByName(request.priority),
textColor: AppColor.getRequestStatusTextColorByName(context, request.priority),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.priority),
),
8.width,
StatusLabel(
label: request.status,
textColor: AColors.getRequestStatusTextColorByName(request.status),
backgroundColor: AColors.getRequestStatusColorByName(request.status),
textColor: AppColor.getRequestStatusTextColorByName(context, request.status),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.status),
),
1.width.expanded,
Text(request.date?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
Text(request.date?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)),
],
),
8.height,
@ -52,22 +50,29 @@ class GasRefillItemView extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(
color: AppColor.blueStatus(context),
),
),
4.width,
const Icon(
Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
color: AppColor.blueStatus(context),
size: 14,
)
],
),
],
).toShadowContainer(context, showShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => GasRefillDetailsPage(
model: GasRefillModel(id: request.id),
)));
priority: request.priority,
date: request.date,
model: GasRefillModel(id: request.id),
),
),
);
});
}
}

@ -6,11 +6,10 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/pages/user/visits/visit_details.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart';
import '../../../../views/widgets/requests/request_status.dart';
class PpmItemView extends StatelessWidget {
final RequestsDetails request;
@ -26,15 +25,23 @@ class PpmItemView extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StatusLabel(label: request.priority, textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)),
StatusLabel(
label: request.priority,
textColor: AppColor.getRequestStatusTextColorByName(context, request.priority),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.priority),
),
8.width,
StatusLabel(
label: request.status,
textColor: AColors.getRequestStatusTextColorByName(request.status),
backgroundColor: AColors.getRequestStatusColorByName(request.status),
textColor: AppColor.getRequestStatusTextColorByName(context, request.status),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.status),
),
1.width.expanded,
Text(request.date?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
Text(
request.date?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
),
],
),
8.height,
@ -49,15 +56,19 @@ class PpmItemView extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
],
),
],
).toShadowContainer(context, showShadow: showShadow).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => VisitDetailsPage(visit: Visit(id: request.id))));
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => VisitDetailsPage(visit: Visit(id: request.id), priority: request.priority),
),
);
});
}
}

@ -6,10 +6,10 @@ import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/user/requests/service_request_details.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../../views/widgets/requests/request_status.dart';
import '../../../app_style/app_color.dart';
class ServiceRequestItemView extends StatelessWidget {
final RequestsDetails request;
@ -26,11 +26,19 @@ class ServiceRequestItemView extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StatusLabel(label: request.priority, textColor: AColors.getRequestStatusTextColorByName(request.priority), backgroundColor: AColors.getRequestStatusColorByName(request.priority)),
StatusLabel(
label: request.priority,
textColor: AppColor.getRequestStatusTextColorByName(context, request.priority),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.priority),
),
8.width,
StatusLabel(label: request.status, textColor: AColors.getRequestStatusTextColorByName(request.status), backgroundColor: AColors.getRequestStatusColorByName(request.status)),
StatusLabel(
label: request.status,
textColor: AppColor.getRequestStatusTextColorByName(context, request.status),
backgroundColor: AppColor.getRequestStatusColorByName(context, request.status),
),
1.width.expanded,
Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
Text(request.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)),
],
),
8.height,
@ -45,12 +53,12 @@ class ServiceRequestItemView extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(
Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
color: AppColor.blueStatus(context),
size: 14,
)
],

@ -22,7 +22,7 @@ class RequestItemViewList extends StatelessWidget {
: ListView.separated(
padding: const EdgeInsets.all(16),
itemBuilder: (cxt, index) {
if (isLoading) return SizedBox().toRequestShimmer(cxt, isLoading);
if (isLoading) return const SizedBox().toRequestShimmer(cxt, isLoading);
bool isServiceRequest = list[index].nameOfType == "ServiceRequest";
bool isGasRefill = list[index].nameOfType == "GasRefill";
bool isAssetTransfer = list[index].nameOfType == "AssetTransfer";

@ -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';
@ -45,13 +46,24 @@ class _RequestsSearchButtonsState extends State<RequestsSearchButtons> {
.map(
(data) => Container(
padding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: (_data == data ? 12 : 8).toScreenWidth),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7),
color: _data == data ? AppColor.neutral30 : Colors.white,
border: _data == data ? Border.all(width: 1, color: AppColor.primary50) : null,
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)],
foregroundDecoration: _data != data
? null
: ShapeDecoration(
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(0.1),
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: AppColor.blueStatus(context)),
borderRadius: BorderRadius.circular(7),
),
),
decoration: ShapeDecoration(
color: _data == data ? AppColor.selectedButtonColor(context) : AppColor.unSelectedButtonColor(context),
shape: RoundedRectangleBorder(
side: _data == data ? BorderSide(width: 1, color: AppColor.blueStatus(context)) : BorderSide.none,
borderRadius: BorderRadius.circular(7),
),
shadows: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14, offset: const Offset(0, 0), spreadRadius: 0)],
),
child: data.label.tinyFont(context).custom(color: AppColor.neutral50),
child: data.label.tinyFont(context).custom(color: AppColor.filterButtonTextColor(context)),
).onPress(
() {
setState(() {

@ -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';
@ -46,13 +47,24 @@ class _RequestsTypeFilterState extends State<RequestsTypeFilter> {
.map(
(data) => Container(
padding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: (_selected.contains(widget.items[data]) ? 12 : 8).toScreenWidth),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7),
color: _selected.contains(widget.items[data]) ? AppColor.neutral30 : Colors.white,
border: _selected.contains(widget.items[data]) ? Border.all(width: 1, color: AppColor.primary50) : null,
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)],
foregroundDecoration: !_selected.contains(widget.items[data])
? null
: ShapeDecoration(
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(0.1),
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: AppColor.blueStatus(context)),
borderRadius: BorderRadius.circular(7),
),
),
decoration: ShapeDecoration(
color: _selected.contains(widget.items[data]) ? AppColor.selectedButtonColor(context) : AppColor.unSelectedButtonColor(context),
shape: RoundedRectangleBorder(
side: _selected.contains(widget.items[data]) ? BorderSide(width: 1, color: AppColor.blueStatus(context)) : BorderSide.none,
borderRadius: BorderRadius.circular(7),
),
shadows: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14, offset: const Offset(0, 0), spreadRadius: 0)],
),
child: data.tinyFont(context).custom(color: AppColor.neutral50),
child: data.tinyFont(context).custom(color: AppColor.filterButtonTextColor(context)),
).onPress(
() {
if (_selected.contains(widget.items[data])) {

@ -1,144 +1,144 @@
import 'package:flutter/material.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
class AColors {
AColors._();
static const Color white = Color(0xffffffff);
static const Color black = Color(0xff000000);
static const Color grey3A = Color(0xff2e303a);
static const Color grey = Color(0xffe1e7e7);
static const green = Colors.green;
static const Color orange = Colors.orange;
static const Color deepOrange = Colors.deepOrangeAccent;
static const Color red = Colors.red;
static const Color deepRed = Color(0xFFD32F2F);
static const Color scaffoldBackgroundColor = Color(0xffffffff);
static const Color secondaryColor = Color(0xff111427);
static const Color primaryColor = Color(0xff5bb0da);
static const Color cyan = Color(0xff4A8DB7);
static const Color onPrimaryColor = Color(0xffffffff);
static Color inputFieldBackgroundColor = Color(0xfff5f5f5);
static Color greyEF = Color(0xffEFEFEF);
static Color statusYellow = const Color(0xFF886300);
static Color statusYellowLight = const Color(0xFFFFEDBC);
static Color statusGreen = const Color(0xFF62BE96);
static Color statusGreenLight = const Color(0xFF62BE96);
static Color statusRed = const Color(0xFF8C0409);
static Color statusRedLight = const Color(0xFFFFDBDC);
static Color statusBlue = AppColor.primary50;
// static Color statusBlueLight = const Color(0xFFA2E2F8);
static Color statusDefault = const Color(0xFF3B3D4A);
static Color getRequestStatusTextColorByName(String status) {
switch ((status ?? "").toLowerCase()) {
case "in progress":
return AColors.statusYellow;
case "high priority":
return AColors.statusRed;
// case "low priority":
// return AColors.statusGreen;
default:
return AColors.white;
}
}
static Color getRequestStatusColorByName(String status) {
switch ((status ?? "").toLowerCase()) {
case "medium":
return AColors.statusBlue.withOpacity(0.7);
case "in progress":
return AColors.statusYellowLight;
case "complete":
return AColors.statusGreenLight;
case "closed":
return AColors.statusGreenLight;
case "high priority":
return AColors.statusRedLight;
case "low priority":
return AColors.statusGreenLight;
case "open":
return AColors.statusBlue.withOpacity(0.7);
default:
return AColors.statusDefault;
}
}
static Color getRequestStatusColor(int id) {
switch (id) {
case 1:
return AColors.statusBlue.withOpacity(0.7);
case 2:
return AColors.statusYellowLight;
case 3:
return AColors.statusGreenLight;
case 4:
return AColors.statusRedLight;
case 6:
return AColors.statusGreenLight;
case 5:
return AColors.statusGreenLight;
case 8:
return AColors.statusGreenLight;
case 9:
return AColors.orange;
default:
return AColors.statusDefault;
}
}
static Color getRequestStatusTextColor(int id) {
switch (id) {
case 2:
return AColors.statusYellow;
case 3:
return AColors.white;
case 4:
return AColors.deepRed;
case 6:
return AColors.green;
case 5:
return AColors.white;
case 8:
return AColors.green;
case 9:
return AColors.orange;
default:
return AColors.white;
}
}
static Color getGasStatusColor(int id) {
switch (id) {
case 0:
return AColors.orange;
case 1:
return AColors.green;
default:
return AColors.statusDefault;
}
}
static Color getPriorityStatusTextColor(int id) {
switch (id) {
case 81:
return AColors.white;
case 82:
return AColors.statusRed;
default:
return AColors.statusDefault;
}
}
static Color getPriorityStatusColor(int id) {
switch (id) {
case 81:
return AColors.statusGreenLight;
case 82:
return AColors.statusRedLight;
default:
return AColors.statusDefault;
}
}
}
// import 'package:flutter/material.dart';
// import 'package:test_sa/new_views/app_style/app_color.dart';
//
// class AColors {
// AColors._();
//
// static const Color white = Color(0xffffffff);
// static const Color black = Color(0xff000000);
// static const Color grey3A = Color(0xff2e303a);
// static const Color grey = Color(0xffe1e7e7);
// static const green = Colors.green;
// static const Color orange = Colors.orange;
// static const Color deepOrange = Colors.deepOrangeAccent;
// static const Color red = Colors.red;
// static const Color deepRed = Color(0xFFD32F2F);
// static const Color scaffoldBackgroundColor = Color(0xffffffff);
// static const Color secondaryColor = Color(0xff111427);
// static const Color primaryColor = Color(0xff5bb0da);
// static const Color cyan = Color(0xff4A8DB7);
// static const Color onPrimaryColor = Color(0xffffffff);
// static Color inputFieldBackgroundColor = Color(0xfff5f5f5);
// static Color greyEF = Color(0xffEFEFEF);
//
// static Color statusYellow = const Color(0xFF886300);
// static Color statusYellowLight = const Color(0xFFFFEDBC);
// static Color statusGreen = const Color(0xFF62BE96);
// static Color statusGreenLight = const Color(0xFF62BE96);
// static Color statusRed = const Color(0xFF8C0409);
// static Color statusRedLight = const Color(0xFFFFDBDC);
// static Color statusBlue = AppColor.primary50;
// // static Color statusBlueLight = const Color(0xFFA2E2F8);
// static Color statusDefault = const Color(0xFF3B3D4A);
//
// static Color getRequestStatusTextColorByName(String status) {
// switch ((status ?? "").toLowerCase()) {
// case "in progress":
// return AColors.statusYellow;
// case "high priority":
// return AColors.statusRed;
// // case "low priority":
// // return AColors.statusGreen;
// default:
// return AColors.white;
// }
// }
//
// static Color getRequestStatusColorByName(String status) {
// switch ((status ?? "").toLowerCase()) {
// case "medium":
// return AColors.statusBlue.withOpacity(0.7);
// case "in progress":
// return AColors.statusYellowLight;
// case "complete":
// return AColors.statusGreenLight;
// case "closed":
// return AColors.statusGreenLight;
// case "high priority":
// return AColors.statusRedLight;
// case "low priority":
// return AColors.statusGreenLight;
// case "open":
// return AColors.statusBlue.withOpacity(0.7);
// default:
// return AColors.statusDefault;
// }
// }
//
// static Color getRequestStatusColor(int id) {
// switch (id) {
// case 1:
// return AColors.statusBlue.withOpacity(0.7);
// case 2:
// return AColors.statusYellowLight;
// case 3:
// return AColors.statusGreenLight;
// case 4:
// return AColors.statusRedLight;
// case 6:
// return AColors.statusGreenLight;
// case 5:
// return AColors.statusGreenLight;
// case 8:
// return AColors.statusGreenLight;
// case 9:
// return AColors.orange;
// default:
// return AColors.statusDefault;
// }
// }
//
// static Color getRequestStatusTextColor(int id) {
// switch (id) {
// case 2:
// return AColors.statusYellow;
// case 3:
// return AColors.white;
// case 4:
// return AColors.deepRed;
// case 6:
// return AColors.green;
// case 5:
// return AColors.white;
// case 8:
// return AColors.green;
// case 9:
// return AColors.orange;
// default:
// return AColors.white;
// }
// }
//
// static Color getGasStatusColor(int id) {
// switch (id) {
// case 0:
// return AColors.orange;
// case 1:
// return AColors.green;
// default:
// return AColors.statusDefault;
// }
// }
//
// static Color getPriorityStatusTextColor(int id) {
// switch (id) {
// case 81:
// return AColors.white;
// case 82:
// return AColors.statusRed;
// default:
// return AColors.statusDefault;
// }
// }
//
// static Color getPriorityStatusColor(int id) {
// switch (id) {
// case 81:
// return AColors.statusGreenLight;
// case 82:
// return AColors.statusRedLight;
// default:
// return AColors.statusDefault;
// }
// }
// }

@ -7,7 +7,6 @@ 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/views/app_style/colors.dart';
import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
@ -101,8 +100,11 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
// ],
// ),
1.width,
Text(_model?.createdOn != null ? _model.createdOn.toServiceRequestCardFormat : "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
Text(
_model?.createdOn != null ? _model.createdOn.toServiceRequestCardFormat : "",
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
),
],
@ -122,8 +124,9 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
? StatusLabel(
label: _model?.senderMachineStatusName,
id: _model?.senderMachineStatusId,
textColor: AColors.getRequestStatusTextColorByName(_model.senderMachineStatusName),
backgroundColor: AColors.getRequestStatusColorByName(_model.senderMachineStatusName))
textColor: AppColor.getRequestStatusTextColorByName(context, _model.senderMachineStatusName),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model.senderMachineStatusName),
)
: null,
),
8.height,
@ -141,8 +144,8 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
? StatusLabel(
label: _model?.receiverMachineStatusName ?? "",
id: _model?.receiverMachineStatusId,
textColor: AColors.getRequestStatusTextColorByName(_model.receiverMachineStatusName),
backgroundColor: AColors.getRequestStatusColorByName(_model.receiverMachineStatusName))
textColor: AppColor.getRequestStatusTextColorByName(context, _model.receiverMachineStatusName),
backgroundColor: AppColor.getRequestStatusColorByName(context, _model.receiverMachineStatusName))
: null,
),
],
@ -175,7 +178,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
statusLabel ?? Container(),
8.height,
if (statusLabel != null) 8.height,
isSender ? context.translation.senderDetails.heading5(context) : context.translation.receiverDetails.heading5(context),
],
),
@ -192,7 +195,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
_buildTextWidget('${context.translation.unite} : $unit'),
if (comment != null && comment.isNotEmpty) ...[
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
const Divider().defaultStyle(context),
8.height,
_buildTextWidget(comment),
]

@ -13,7 +13,6 @@ import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field_new
import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/providers/api/status_drop_down/report/service_report_maintenance_situation_provider.dart';
import '../../../models/new_models/assigned_employee.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/buttons/app_button.dart';
import '../../widgets/status/report/service_report_all_users.dart';
@ -54,7 +53,7 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
child: Column(
children: [
Container(
color: AColors.primaryColor,
// color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
children: [
@ -65,7 +64,7 @@ class _SearchSubWorkOrderPageState extends State<SearchSubWorkOrderPage> {
child: Center(
child: Text(
"Search Work Order",
style: Theme.of(context).textTheme.titleLarge.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
// style: Theme.of(context).textTheme.titleLarge.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
),

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/views/app_style/colors.dart';
import '../../../models/service_request/spare_parts.dart';
import '../../app_style/sizing.dart';
@ -71,12 +70,12 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
width: double.infinity,
padding: const EdgeInsets.all(16),
margin: const EdgeInsets.symmetric(vertical: 16),
decoration: BoxDecoration(color: AColors.grey, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: const [
BoxShadow(
color: AColors.grey,
offset: Offset(0, -1),
)
]),
// decoration: BoxDecoration(color: AColors.grey, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: const [
// BoxShadow(
// color: AColors.grey,
// offset: Offset(0, -1),
// )
// ]),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [

@ -2,9 +2,7 @@ import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../models/service_request/search_work_order.dart';
@ -137,7 +135,7 @@ class WorkOrderItem extends StatelessWidget {
),
),
),
if (item.callRequest.status?.id != null) StatusLabel(label: item.callRequest.status.name, backgroundColor: AColors.getGasStatusColor(item.callRequest.status.id)),
// if (item.callRequest.status?.id != null) StatusLabel(label: item.callRequest.status.name, backgroundColor: AColors.getGasStatusColor(item.callRequest.status.id)),
],
),
],

@ -5,7 +5,6 @@ import 'package:test_sa/views/pages/sub_workorder/workorder_item.dart';
import '../../../controllers/providers/api/service_requests_provider.dart';
import '../../../models/service_request/search_work_order.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/lazy_loading.dart';
import '../../widgets/loaders/no_item_found.dart';
@ -39,7 +38,7 @@ class _WorkOrderListState extends State<WorkOrderList> {
child: Column(
children: [
Container(
color: AColors.primaryColor,
// color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
children: [
@ -50,7 +49,7 @@ class _WorkOrderListState extends State<WorkOrderList> {
child: Center(
child: Text(
"Work Order List",
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
// style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
),

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart';
import '../../../models/service_request/search_work_order.dart';
import '../../app_style/colors.dart';
import '../../widgets/buttons/app_back_button.dart';
import '../../widgets/loaders/loading_manager.dart';
@ -43,7 +42,7 @@ class _WorkOrderUpdateState extends State<WorkOrderUpdate> {
child: Center(
child: Text(
"Work Order",
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
// style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
),

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
@ -7,23 +6,22 @@ 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/widget_extensions.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/no_item_found.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../../extensions/text_extensions.dart';
import '../../../../models/enums/user_types.dart';
import '../../../../models/new_models/gas_refill_model.dart';
import '../../../../new_views/app_style/app_color.dart';
import '../../../../new_views/common_widgets/default_app_bar.dart';
import '../../../app_style/colors.dart';
import '../../../widgets/requests/request_status.dart';
class GasRefillDetailsPage extends StatefulWidget {
GasRefillModel model;
String priority, date;
GasRefillDetailsPage({Key key, this.model}) : super(key: key);
GasRefillDetailsPage({Key key, this.priority, this.date, this.model}) : super(key: key);
@override
State<GasRefillDetailsPage> createState() => _GasRefillDetailsPageState();
@ -78,77 +76,74 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
Widget informationCard(GasRefillModel gasRefillModel) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
mainAxisSize: MainAxisSize.min,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
Row(
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,
if (widget.priority != null)
StatusLabel(
label: widget.priority,
textColor: AppColor.getRequestStatusTextColorByName(context, widget.priority),
backgroundColor: AppColor.getRequestStatusColorByName(context, widget.priority),
),
8.width,
StatusLabel(
label: gasRefillModel.status?.name ?? "",
textColor: AColors.getRequestStatusTextColorByName(gasRefillModel.status.name),
backgroundColor: AColors.getRequestStatusColorByName(gasRefillModel.status.name),
textColor: AppColor.getRequestStatusTextColorByName(context, gasRefillModel.status?.name ?? ""),
backgroundColor: AppColor.getRequestStatusColorByName(context, gasRefillModel.status?.name ?? ""),
),
8.height,
context.translation.gasRefillRequest.heading5(context),
8.height,
///TBD
'${context.translation.gasRequest}: ${gasRefillModel.gazRefillDetails[0].gasType?.name}'.bodyText(context),
'${context.translation.cylinderSize}: ${gasRefillModel.gazRefillDetails[0].cylinderSize?.name}'.bodyText(context),
'${context.translation.site}: ${gasRefillModel.site?.name}'.bodyText(context),
],
),
1.width.expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.engineer && (gasRefillModel.status?.value ?? 0) != 2)
"edit".toSvgAsset(height: 48, width: 48).onPress(
() async {
_model?.fromGasRefillModel(gasRefillModel);
// setState(() {});
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RequestGasRefill(
gasRefillModel: gasRefillModel,
),
),
).then((value) {
if (value != null) {
_model = value;
}
});
8.height,
context.translation.gasRefillRequest.heading5(context),
8.height,
'${context.translation.gasRequest}: ${gasRefillModel.gazRefillDetails[0].gasType?.name}'.bodyText(context),
'${context.translation.cylinderSize}: ${gasRefillModel.gazRefillDetails[0].cylinderSize?.name}'.bodyText(context),
'${context.translation.site}: ${gasRefillModel.site?.name}'.bodyText(context),
const Divider().defaultStyle(context),
'${context.translation.requestedQuantity}: ${gasRefillModel.gazRefillDetails[0]?.requestedQty ?? 0}'.bodyText(context),
'${context.translation.deliveredQuantity}: ${gasRefillModel.gazRefillDetails[0]?.deliverdQty ?? 0}'.bodyText(context),
8.height,
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
if (_userProvider.user.type == UsersTypes.engineer && (gasRefillModel.status?.value ?? 0) != 2)
"edit".toSvgAsset(height: 48, width: 48).onPress(
() async {
_model?.fromGasRefillModel(gasRefillModel);
// setState(() {});
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RequestGasRefill(gasRefillModel: gasRefillModel),
),
).then((value) {
if (value != null) {
_model = value;
setState(() {});
},
),
Text(gasRefillModel.expectedDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
)
}
});
},
),
if (_userProvider.user.type == UsersTypes.engineer && (gasRefillModel.status?.value ?? 0) != 2) 8.height,
Text(
(widget.date ?? gasRefillModel.expectedDate)?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
),
],
),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
'${context.translation.requestedQuantity}: ${gasRefillModel.gazRefillDetails[0]?.requestedQty ?? 0}'.bodyText(context),
'${context.translation.deliveredQuantity}: ${gasRefillModel.gazRefillDetails[0]?.deliverdQty ?? 0}'.bodyText(context),
8.height,
],
).paddingAll(16),
).paddingOnly(top: 16, start: 16, end: 16),
/// TBD
(_userProvider.user.type == UsersTypes.normal_user
@ -157,9 +152,9 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: const ShapeDecoration(
color: Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
decoration: ShapeDecoration(
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
@ -171,10 +166,10 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
Text(
'${context.translation.commentHere}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(.6),
),
).expanded,
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 20 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
"comment_send".toSvgAsset(width: 24, color: context.isDark ? AppColor.primary50 : AppColor.primary70),
],
),
)
@ -182,19 +177,19 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
16.height,
const Divider().defaultStyle(context),
8.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${context.translation.viewComments}',
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(
Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
color: AppColor.blueStatus(context),
size: 14,
)
],

@ -1,6 +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/widget_extensions.dart';
import 'package:test_sa/models/system_notification_model.dart';
import 'package:test_sa/views/widgets/loaders/lazy_loading.dart';
@ -29,7 +28,7 @@ class NotificationsList extends StatelessWidget {
physics: const NeverScrollableScrollPhysics(),
padding: const EdgeInsets.all(0),
itemCount: notifications.length,
separatorBuilder: (context, itemIndex) => 1.divider.paddingOnly(top: 16, bottom: 16),
separatorBuilder: (context, itemIndex) => const Divider().defaultStyle(context).paddingOnly(top: 16, bottom: 16),
itemBuilder: (context, itemIndex) {
return NotificationItem(
notification: notifications[itemIndex],

@ -8,7 +8,6 @@ import 'package:test_sa/controllers/validator/validator.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/issue.dart';
import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
@ -65,7 +64,7 @@ class _ReportIssuesPageState extends State<ReportIssuesPage> {
),
child: Text(
context.translation.reportIssue,
style: Theme.of(context).textTheme.headline5.copyWith(color: AColors.cyan, fontWeight: FontWeight.bold),
// style: Theme.of(context).textTheme.headline5.copyWith(color: AColors.cyan, fontWeight: FontWeight.bold),
),
),
),
@ -79,14 +78,14 @@ class _ReportIssuesPageState extends State<ReportIssuesPage> {
vertical: 16,
),
decoration: BoxDecoration(
color: AColors.grey,
// color: AColors.grey,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(AppStyle.getBorderRadius(context)),
topRight: Radius.circular(AppStyle.getBorderRadius(context)),
),
boxShadow: [
BoxShadow(
color: AColors.grey,
// color: AColors.grey,
offset: Offset(0, -1),
)
]),

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/comments_provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
@ -14,16 +13,14 @@ import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/user/requests/comments_bottom_sheet.dart';
import 'package:test_sa/views/pages/user/requests/update_service_request_page.dart';
import 'package:test_sa/views/pages/user/requests/work_order/work_orders_list_page.dart';
import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import 'package:test_sa/views/widgets/sound/sound_player.dart';
import '../../../widgets/requests/request_status.dart';
import 'first_action_bottom_sheet.dart';
class ServiceRequestDetailsPage extends StatefulWidget {
@ -73,32 +70,34 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
Row(
children: [
StatusLabel(
label: serviceRequest.priority.name,
id: serviceRequest.priority.id,
textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id),
backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id)),
label: serviceRequest.priority.name,
id: serviceRequest.priority.id,
textColor: AppColor.getPriorityStatusTextColor(context, serviceRequest.priority.id),
backgroundColor: AppColor.getPriorityStatusColor(context, serviceRequest.priority.id),
),
8.width,
StatusLabel(
label: serviceRequest.statusLabel,
textColor: AColors.getRequestStatusTextColor(serviceRequest.statusValue),
backgroundColor: AColors.getRequestStatusColor(serviceRequest.statusValue)),
label: serviceRequest.statusLabel,
textColor: AppColor.getRequestStatusTextColor(context, serviceRequest.statusValue),
backgroundColor: AppColor.getRequestStatusColor(context, serviceRequest.statusValue),
),
1.width.expanded,
],
),
8.height,
Text(serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
Text(serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)),
8.height,
Text(
'${context.translation.assetNumber}: ${serviceRequest.device.assetNumber}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.requestType}: ${serviceRequest.type.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.requestNo}: ${serviceRequest.requestCode}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
).expanded,
@ -110,39 +109,42 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest)));
}),
if (_userProvider.user.type == UsersTypes.engineer) 16.height,
Text(serviceRequest.date.toServiceRequestCardFormat,
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
Text(
serviceRequest.date.toServiceRequestCardFormat,
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
],
)
],
),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
const Divider().defaultStyle(context),
8.height,
Text(
'${context.translation.manufacture}: ${serviceRequest.device.modelDefinition.manufacturerName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.model}: ${serviceRequest.device.modelDefinition.modelName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
8.height,
if ((serviceRequest.callComments ?? "").isNotEmpty) ...[
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
const Divider().defaultStyle(context),
8.height,
Text(
serviceRequest.callComments,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF757575)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
if (serviceRequest.devicePhotos.isNotEmpty) ...[
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
const Divider().defaultStyle(context),
FilesList(images: serviceRequest.devicePhotos),
],
if (serviceRequest.audio?.isNotEmpty ?? false) ...[
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
const Divider().defaultStyle(context),
16.height,
ASoundPlayer(audio: serviceRequest.audio),
8.height,
@ -155,9 +157,9 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: const ShapeDecoration(
color: Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
decoration: ShapeDecoration(
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
@ -169,10 +171,10 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
Text(
'${context.translation.commentHere}...',
style: AppTextStyles.heading6.copyWith(
color: AppColor.neutral50.withOpacity(.6),
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(.6),
),
).expanded,
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 20 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
"comment_send".toSvgAsset(width: 24, color: context.isDark ? AppColor.primary50 : AppColor.primary70),
],
),
)
@ -180,21 +182,17 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
const Divider().defaultStyle(context),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewComments,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
],
),
],

@ -54,8 +54,8 @@ class _PartNoButtonState extends State<PartNoButton> {
collapsedShape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
tilePadding: const EdgeInsets.symmetric(horizontal: 16),
childrenPadding: const EdgeInsets.symmetric(horizontal: 16),
backgroundColor: Theme.of(context).cardColor,
collapsedBackgroundColor: Theme.of(context).cardColor,
backgroundColor: AppColor.background(context),
collapsedBackgroundColor: AppColor.background(context),
children: [
SingleItemDropDownMenu<SparePart, NullableLoadingProvider>(
context: context,
@ -90,7 +90,7 @@ class _PartNoButtonState extends State<PartNoButton> {
label: context.translation.add,
maxWidth: true,
textColor: Colors.white,
buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50,
buttonColor: AppColor.neutral50,
onPressed: () {
if (current != null && _formKey.currentState.validate()) {
_formKey.currentState.save();

@ -32,53 +32,62 @@ class WorkOrderDetailsPage extends StatelessWidget {
body: Column(
children: [
SingleChildScrollView(
child: Column(
child: Row(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StatusLabel(
label: workOrder.currentSituation.name,
textColor: AppColor.getRequestStatusTextColorByName(context, workOrder.currentSituation.name),
backgroundColor: AppColor.getRequestStatusColorByName(context, workOrder.currentSituation.name),
),
8.height,
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)),
8.height,
Text(
'${context.translation.assetName}: ${workOrder.callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.status}: ${workOrder.currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.orderWorkNumber}: ${workOrder.workOrderNo}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.assignedEmployee}: ${workOrder.assignedEmployee?.name ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text('${context.translation.assetSN}: ${workOrder.callRequest.asset.assetSerialNo ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
Text('${context.translation.assetName}: ${workOrder.callRequest.asset.modelDefinition.assetName ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
Text('${context.translation.assetNumber}: ${workOrder.callRequest.asset.assetNumber ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
Text('${context.translation.model}: ${workOrder.callRequest.asset.modelDefinition.modelName ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
Text('${context.translation.site}: ${workOrder.callRequest.asset.site.custName ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
Text('${context.translation.callLastSituation}: ${workOrder.calllastSituation.name ?? '' ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
StatusLabel(label: workOrder.currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
if (userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
Align(alignment: AlignmentDirectional.centerEnd, child: "edit".toSvgAsset(height: 48, width: 48)).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateServiceReport(workOrder: workOrder, request: serviceRequest)));
}),
if (userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height,
Text(workOrder.visitDate?.toServiceRequestCardFormat ?? "", style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)),
],
),
8.height,
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: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
Text(
'${context.translation.status}: ${workOrder.currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
Text(
'${context.translation.orderWorkNumber}: ${workOrder.workOrderNo}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
Text(
'${context.translation.assignedEmployee}: ${workOrder.assignedEmployee?.name ?? ""}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : 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))),
)
],
).toShadowContainer(context),
).paddingAll(16).expanded,

@ -52,57 +52,27 @@ class WorkOrderListPage extends StatelessWidget {
itemCount: workOrders.length,
separatorBuilder: (czt, index) => 8.height,
itemBuilder: (context, index) {
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 Column(
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
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)
"edit".toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
})
],
StatusLabel(
label: workOrders[index].currentSituation.name,
textColor: AppColor.getRequestStatusTextColorByName(context, workOrders[index].currentSituation.name),
backgroundColor: AppColor.getRequestStatusColorByName(context, workOrders[index].currentSituation.name),
),
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))),
],
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)),
Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
16.height,
Row(
@ -110,10 +80,10 @@ class WorkOrderListPage extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
],
),
],
@ -122,7 +92,22 @@ class WorkOrderListPage extends StatelessWidget {
context,
MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)),
);
}),
}).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
"edit".toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
}),
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
],
)
],
).toShadowContainer(context);
},

@ -9,7 +9,6 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/visits/visits_group.dart';
import 'package:test_sa/models/visits/visits_search.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/user/visits/update_visits_group_sheet.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart';
@ -56,7 +55,7 @@ class _PreventiveMaintenanceVisitsPageState extends State<PreventiveMaintenanceV
Column(
children: [
Container(
color: AColors.primaryColor,
// color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
children: [
@ -67,15 +66,15 @@ class _PreventiveMaintenanceVisitsPageState extends State<PreventiveMaintenanceV
child: Center(
child: Text(
context.translation.preventiveMaintenance,
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
// style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
),
AIconButton(
iconData: Icons.search,
color: AColors.secondaryColor,
// color: AColors.secondaryColor,
buttonSize: 42,
backgroundColor: AColors.white,
// backgroundColor: AColors.white,
onPressed: () async {
VisitsSearch _temp = await showModalBottomSheet(
context: context,

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/models/visits/visits_group.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/buttons/app_small_button.dart';
@ -210,13 +209,13 @@ class _UpdateVisitsGroupSheetState extends State<UpdateVisitsGroupSheet> {
return Container(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8),
margin: EdgeInsets.symmetric(vertical: 4),
decoration: BoxDecoration(color: AColors.primaryColor, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: [AppStyle.boxShadow]),
// decoration: BoxDecoration(color: AColors.primaryColor, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: [AppStyle.boxShadow]),
child: Row(
children: [
Expanded(
child: Text(
"${context.translation.sn}: " + visit.deviceSerialNumber ?? context.translation.noSerialNumberFound,
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontSize: 16, fontWeight: FontWeight.bold),
// style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontSize: 16, fontWeight: FontWeight.bold),
),
),
VisitStatusLabel(

@ -14,15 +14,16 @@ import 'package:test_sa/views/widgets/loaders/no_item_found.dart';
import '../../../../controllers/providers/api/user_provider.dart';
import '../../../../models/enums/user_types.dart';
import '../../../../new_views/app_style/app_color.dart';
import '../../../../new_views/common_widgets/app_filled_button.dart';
import '../../../app_style/colors.dart';
import '../../../widgets/requests/request_status.dart';
class VisitDetailsPage extends StatelessWidget {
static const String id = "/visit-details";
final Visit visit;
final String priority;
const VisitDetailsPage({Key key, this.visit}) : super(key: key);
const VisitDetailsPage({Key key, this.visit, this.priority}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -48,17 +49,18 @@ class VisitDetailsPage extends StatelessWidget {
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,
if (priority != null)
StatusLabel(
label: priority,
textColor: AppColor.getRequestStatusTextColorByName(context, priority),
backgroundColor: AppColor.getRequestStatusColorByName(context, priority),
),
if (priority != null) 8.width,
StatusLabel(
label: visit.status.name,
id: visit.status.id,
textColor: AColors.getRequestStatusTextColorByName(visit.status.name),
backgroundColor: AColors.getRequestStatusColorByName(visit.status.name),
textColor: AppColor.getRequestStatusTextColorByName(context, visit.status.name),
backgroundColor: AppColor.getRequestStatusColorByName(context, visit.status.name),
),
1.width.expanded,
],

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class AppNameBar extends StatelessWidget {
@ -7,12 +6,12 @@ class AppNameBar extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
height: 50 * AppStyle.getScaleFactor(context),
color: AColors.primaryColor,
// color: AColors.primaryColor,
padding: const EdgeInsets.all(8.0),
child: Center(
child: Text(
"Test SA",
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
style: Theme.of(context).textTheme.headline6.copyWith(/*color: AColors.white,*/ fontStyle: FontStyle.italic),
),
),
);

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'app_icon_button.dart';
@ -14,8 +13,8 @@ class ABackButton extends StatelessWidget {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 16),
child: AIconButton(
color: AColors.white,
backgroundColor: AColors.primaryColor,
// color: AColors.white,
// backgroundColor: AColors.primaryColor,
iconData: icon ?? Icons.arrow_back_ios_new,
iconSize: 24,
buttonSize: 40,

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class AButton extends StatelessWidget {
@ -10,7 +9,7 @@ class AButton extends StatelessWidget {
final TextStyle textStyle;
final VoidCallback onPressed;
const AButton({Key key, this.color = AColors.primaryColor, this.text, this.padding, this.onPressed, this.textStyle}) : super(key: key);
const AButton({Key key, this.color /* = AColors.primaryColor*/, this.text, this.padding, this.onPressed, this.textStyle}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -19,7 +18,7 @@ class AButton extends StatelessWidget {
child: ElevatedButton(
style: ElevatedButton.styleFrom(
elevation: 0,
foregroundColor: color.computeLuminance() > 0.5 ? AColors.black : Colors.white,
// foregroundColor: color.computeLuminance() > 0.5 ? AColors.black : Colors.white,
backgroundColor: color,
padding: padding ?? const EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))),
@ -27,7 +26,7 @@ class AButton extends StatelessWidget {
onPressed: onPressed,
child: Text(
text ?? "",
style: textStyle ?? Theme.of(context).textTheme.subtitle2.copyWith(color: AColors.white, fontSize: 14, fontWeight: FontWeight.w600),
// style: textStyle ?? Theme.of(context).textTheme.subtitle2.copyWith(color: AColors.white, fontSize: 14, fontWeight: FontWeight.w600),
textScaleFactor: AppStyle.getScaleFactor(context),
),
),

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class AIconButton extends StatelessWidget {
@ -22,12 +21,12 @@ class AIconButton extends StatelessWidget {
style: ElevatedButton.styleFrom(
padding: EdgeInsets.zero,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular((AppStyle.borderRadius - 4) * AppStyle.getScaleFactor(context))),
backgroundColor: backgroundColor ?? AColors.onPrimaryColor,
// backgroundColor: backgroundColor ?? AColors.onPrimaryColor,
),
onPressed: onPressed,
child: FaIcon(
iconData,
color: color ?? AColors.primaryColor,
// color: color ?? AColors.primaryColor,
size: iconSize ?? 32,
),
),

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class AOutLinedButton extends StatelessWidget {
@ -9,7 +8,7 @@ class AOutLinedButton extends StatelessWidget {
final TextStyle textStyle;
final VoidCallback onPressed;
const AOutLinedButton({Key key, this.color = AColors.primaryColor, this.text, this.padding, this.onPressed, this.textStyle}) : super(key: key);
const AOutLinedButton({Key key, this.color/*= AColors.primaryColor*/, this.text, this.padding, this.onPressed, this.textStyle}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -25,7 +24,7 @@ class AOutLinedButton extends StatelessWidget {
Expanded(
child: Text(
text ?? "",
style: Theme.of(context).textTheme.subtitle2.copyWith(color: AColors.primaryColor, fontSize: 14, fontWeight: FontWeight.w600),
// style: Theme.of(context).textTheme.subtitle2.copyWith(color: AColors.primaryColor, fontSize: 14, fontWeight: FontWeight.w600),
textAlign: TextAlign.center,
textScaleFactor: AppStyle.getScaleFactor(context),
),

@ -20,10 +20,10 @@ class ADatePicker extends StatelessWidget {
return Container(
decoration: BoxDecoration(
color: context.isDark && (enable == false)
? AppColor.neutral60
? AppColor.neutral50
: (enable == false)
? AppColor.neutral40
: Theme.of(context).cardColor,
: AppColor.background(context),
borderRadius: BorderRadius.circular(10),
border: Border.all(width: 1, color: Theme.of(context).scaffoldBackgroundColor),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/department.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/departments/single_department_picker.dart';
@ -20,8 +19,8 @@ class DepartmentButton extends StatelessWidget {
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
),
foregroundColor: AColors.primaryColor,
backgroundColor: AColors.inputFieldBackgroundColor,
// foregroundColor: AColors.primaryColor,
// backgroundColor: AColors.inputFieldBackgroundColor,
),
child: Row(
children: [
@ -37,7 +36,7 @@ class DepartmentButton extends StatelessWidget {
),
),
),
const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A),
// const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A),
],
),
onPressed: () async {

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/department.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class DepartmentItem extends StatelessWidget {
@ -15,7 +14,7 @@ class DepartmentItem extends StatelessWidget {
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 6),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: AColors.primaryColor,
// backgroundColor: AColors.primaryColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
@ -26,7 +25,7 @@ class DepartmentItem extends StatelessWidget {
child: ListTile(
title: Text(
department.name ?? "",
style: Theme.of(context).textTheme.subtitle1.copyWith(color: AColors.white),
// style: Theme.of(context).textTheme.subtitle1.copyWith(color: AColors.white),
textDirection: TextDirection.rtl,
),
),

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/widgets/loaders/image_loader.dart';
import 'package:test_sa/views/widgets/requests/info_row.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
@ -66,7 +65,9 @@ class DeviceTransferInfoSection extends StatelessWidget {
),
RequestInfoRow(
title: context.translation.status,
infoWidget: StatusLabel(label: info.status?.name, backgroundColor: AColors.getGasStatusColor(info.status?.id)),
infoWidget: StatusLabel(
label: info.status?.name, /*backgroundColor: AColors.getGasStatusColor(info.status?.id)*/
),
),
],
);

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/int_extensions.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';
class DrawerItem extends StatelessWidget {
@ -25,11 +24,13 @@ class DrawerItem extends StatelessWidget {
onPressed: onPressed,
child: Row(
children: [
Icon(icon, color: AColors.grey3A, size: 20),
Icon(icon, /*color: AColors.grey3A,*/ size: 20),
12.width,
Text(
title,
style: Theme.of(context).textTheme.headline6.copyWith(fontSize: 14, color: AColors.grey3A),
style: Theme.of(context).textTheme.headline6.copyWith(
fontSize: 14, /* color: AColors.grey3A*/
),
textScaleFactor: AppStyle.getScaleFactor(context),
),
],

@ -25,11 +25,7 @@ class ESignature extends StatefulWidget {
class _ESignatureState extends State<ESignature> {
// Initialise a controller. It will contains signature points, stroke width and pen color.
final SignatureController _controller = SignatureController(
penStrokeWidth: 2,
penColor: Colors.black,
exportBackgroundColor: Colors.white,
);
SignatureController _controller;
Uint8List signature;
@ -52,6 +48,11 @@ class _ESignatureState extends State<ESignature> {
@override
Widget build(BuildContext context) {
_controller ??= SignatureController(
penStrokeWidth: 2,
penColor: context.isDark ? Colors.white : Colors.black,
exportBackgroundColor: AppColor.background(context),
);
print(widget.oldSignature);
return FormField<String>(onSaved: (_) async {
widget.onSaved(signature);
@ -62,7 +63,7 @@ class _ESignatureState extends State<ESignature> {
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
decoration: BoxDecoration(
color: context.isDark ? Theme.of(context).cardColor : Colors.white,
color: context.isDark ? AppColor.background(context) : 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)],
),

@ -5,7 +5,8 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import '../../../new_views/app_style/app_color.dart';
class AssetItemGridView extends StatelessWidget {
final Asset device;
@ -23,10 +24,8 @@ class AssetItemGridView extends StatelessWidget {
width: 95,
height: 95,
decoration: ShapeDecoration(
color: const Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
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"),
@ -41,7 +40,7 @@ class AssetItemGridView extends StatelessWidget {
Text(
device.modelDefinition.assetName,
maxLines: 2,
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : Color(0xFF3B3D4A)),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -53,9 +52,7 @@ class AssetItemGridView extends StatelessWidget {
"${context.translation.serialNo} : ${device.assetSerialNo}",
maxLines: 2,
overflow: TextOverflow.fade,
style: AppTextStyles.bodyText2.copyWith(
color: context.isDark ? AppColor.neutral10 : Color(0xFF757575),
),
style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
),
@ -64,14 +61,10 @@ class AssetItemGridView extends StatelessWidget {
children: [
Text(
'View Details',
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
],
),
],

@ -5,6 +5,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
class AssetItemListView extends StatelessWidget {
final Asset device;
@ -21,10 +22,8 @@ class AssetItemListView extends StatelessWidget {
width: 95,
height: 95,
decoration: ShapeDecoration(
color: const Color(0xFFEAF1F4),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
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"),
@ -53,12 +52,12 @@ class AssetItemListView extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(
Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
color: AppColor.blueStatus(context),
size: 14,
)
],

@ -4,7 +4,6 @@ import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/devices_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/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
@ -57,7 +56,7 @@ class _AutoCompleteDeviceFieldState extends State<AutoCompleteDeviceField> {
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: AColors.black),
// border: Border.all(color: AColors.black),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
boxShadow: [AppStyle.boxShadow]),
child: TypeAheadField<Asset>(

@ -5,7 +5,6 @@ import 'package:test_sa/controllers/providers/api/devices_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/models/lookup.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class AutoCompleteModelField extends StatefulWidget {
@ -50,7 +49,7 @@ class _AutoCompleteModelFieldState extends State<AutoCompleteModelField> {
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: AColors.black),
// border: Border.all(color: AColors.black),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
boxShadow: [AppStyle.boxShadow]),
child: TypeAheadField<Lookup>(

@ -64,13 +64,24 @@ class _EquipmentStatusButtonsState extends State<EquipmentStatusButtons> {
margin: EdgeInsets.symmetric(horizontal: 4.toScreenWidth),
padding: EdgeInsets.symmetric(vertical: 8.toScreenHeight, horizontal: (widget.initialvalue == index ? 12 : 8).toScreenWidth),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(7),
color: widget.initialvalue == index ? AppColor.neutral30 : Colors.white,
border: widget.initialvalue == index ? Border.all(width: 1, color: AppColor.primary50) : null,
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)],
foregroundDecoration: widget.initialvalue != index
? null
: ShapeDecoration(
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(0.1),
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: AppColor.blueStatus(context)),
borderRadius: BorderRadius.circular(7),
),
),
decoration: ShapeDecoration(
color: widget.initialvalue == index ? AppColor.selectedButtonColor(context) : AppColor.unSelectedButtonColor(context),
shape: RoundedRectangleBorder(
side: widget.initialvalue == index ? BorderSide(width: 1, color: AppColor.blueStatus(context)) : BorderSide.none,
borderRadius: BorderRadius.circular(7),
),
shadows: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 14, offset: const Offset(0, 0), spreadRadius: 0)],
),
child: (index == 0 ? "All Assets" : snapshot.items[index - 1].name).tinyFont(context).custom(color: AppColor.neutral50),
child: (index == 0 ? "All Assets" : snapshot.items[index - 1].name).tinyFont(context).custom(color: AppColor.filterButtonTextColor(context)),
).onPress(() {
setState(() {
widget.initialvalue = index;

@ -16,6 +16,7 @@ import 'package:test_sa/views/widgets/loaders/no_item_found.dart';
import '../../../models/device/asset.dart';
import '../../../models/device/asset_search.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../pages/device_transfer/asset_filter_screen.dart';
import '../../pages/device_transfer/asset_search_screen.dart';
import '../qr/scan_qr.dart';
@ -93,20 +94,18 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
padding: const EdgeInsets.only(left: 16, right: 8),
alignment: Alignment.center,
decoration: ShapeDecoration(
color: context.isDark ? Color(0xFF3B3D4A) : Color(0xFFEAF1F4),
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
),
child: Row(
children: [
const Icon(Icons.search, color: Color(0xFF757575), size: 16),
Icon(Icons.search, color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, size: 19),
8.width,
Text(
context.translation.search,
style: AppTextStyles.bodyText.copyWith(
color: const Color(0xFF757575),
),
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
).expanded,
],
),
@ -119,16 +118,16 @@ class _MyAssetsPageState extends State<MyAssetsPage> {
_searchableList.addAll(_devicesProvider.devices);
}).expanded,
16.width,
const Icon(
Icon(
Icons.grid_view_outlined,
color: Color(0xFF757575),
color: context.isDark ? AppColor.neutral10 : AppColor.neutral20,
).onPress(() => setState(() {
showListView = !showListView;
})),
16.width,
Text(
context.translation.filter,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)),
).onPress(() async {
final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AssetFilterScreen(data: _searchAsset)));
if (result != null) {

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../loaders/app_loading.dart';
@ -59,7 +58,7 @@ class _BuildingTypeMenuState extends State<BuildingTypeMenu> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: const Color(0xffefefef),
),

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../loaders/app_loading.dart';
@ -59,7 +58,7 @@ class _DepartmentTypeMenuState extends State<DepartmentTypeMenu> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: Color(0xffefefef),
),

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../loaders/app_loading.dart';
@ -60,7 +59,7 @@ class _FloorTypeMenuState extends State<FloorTypeMenu> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: const Color(0xffefefef),
),

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart';
import '../../../models/new_models/gas_refill_model.dart';
@ -38,7 +37,7 @@ class _GasRefillCreateDetailsItemState extends State<GasRefillCreateDetailsItem>
Row(
children: [
Expanded(child: Text(widget.model.gasType.name)),
IconButton(onPressed: widget.onPressed, color: widget.isUpdate ? AColors.cyan : AColors.red, icon: Icon(widget.isUpdate ? Icons.edit : Icons.delete))
IconButton(onPressed: widget.onPressed, /* color: widget.isUpdate ? AColors.cyan : AColors.red,*/ icon: Icon(widget.isUpdate ? Icons.edit : Icons.delete))
],
),
Wrap(

@ -7,7 +7,6 @@ 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';
class GasRefillItem extends StatelessWidget {
@ -25,14 +24,16 @@ class GasRefillItem extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/// TBD
// StatusLabel(
// label: ,
// id: ,
// textColor: AColors.getPriorityStatusTextColor(),
// backgroundColor: AColors.getPriorityStatusColor()),
// 8.width,
StatusLabel(label: item.status.name, textColor: AColors.getRequestStatusTextColor(item.status.value), backgroundColor: AColors.getRequestStatusColor(item.status.value)),
// label: item.priority,
// textColor: AppColor.getRequestStatusTextColorByName(context, item.priority),
// backgroundColor: AppColor.getRequestStatusColorByName(context, item.priority),
// ),
StatusLabel(
label: item.status.name,
textColor: AppColor.getRequestStatusTextColor(context, item.status.value),
backgroundColor: AppColor.getRequestStatusColor(context, item.status.value),
),
1.width.expanded,
Text(item.startDate != null ? item.startDate.toServiceRequestCardFormat : "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF3B3D4A))),

@ -38,12 +38,7 @@ class _GasRefillListState extends State<GasRefillList> {
index: itemIndex,
item: widget.items[itemIndex],
onPressed: (model) {
Navigator.of(context)
.push(MaterialPageRoute(
builder: (_) => GasRefillDetailsPage(
model: model,
)))
.then((value) {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => GasRefillDetailsPage(model: model))).then((value) {
model = value;
setState(() {});
});

@ -5,7 +5,6 @@ import 'package:test_sa/controllers/providers/api/hospitals_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class HospitalAutoCompleteField extends StatefulWidget {
@ -56,7 +55,7 @@ class _HospitalAutoCompleteFieldState extends State<HospitalAutoCompleteField> {
return Container(
padding: EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: Color(0xffefefef),
),

@ -5,7 +5,6 @@ import 'package:test_sa/controllers/providers/api/hospitals_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
@ -59,7 +58,7 @@ class _HospitalAutoCompleteFieldState extends State<HospitalAutoCompleteField> {
return Container(
padding: EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: Color(0xffefefef),
),

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/hospitals/single_hospital_picker.dart';
@ -16,8 +15,8 @@ class HospitalButton extends StatelessWidget {
return ElevatedButton(
style: ElevatedButton.styleFrom(
elevation: 0,
foregroundColor: AColors.primaryColor,
backgroundColor: AColors.inputFieldBackgroundColor,
// foregroundColor: AColors.primaryColor,
// backgroundColor: AColors.inputFieldBackgroundColor,
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 8),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context))),
),
@ -28,14 +27,17 @@ class HospitalButton extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 8),
child: Text(
hospital?.name ?? context.translation.pickHospital,
style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 14, color: AColors.grey3A),
// style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 14, color: AColors.grey3A),
// textScaleFactor: AppStyle.getScaleFactor(context),
textDirection: TextDirection.rtl,
textAlign: TextAlign.left,
),
),
),
const Icon(Icons.keyboard_arrow_down, size: 28, color: AColors.grey3A),
const Icon(
Icons.keyboard_arrow_down,
size: 28, /*color: AColors.grey3A*/
),
],
),
onPressed: () async {

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/hospital.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class HospitalItem extends StatelessWidget {
@ -15,7 +14,7 @@ class HospitalItem extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 6),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: AColors.primaryColor,
// backgroundColor: AColors.primaryColor,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
@ -28,7 +27,7 @@ class HospitalItem extends StatelessWidget {
child: ListTile(
title: Text(
hospital.name ?? "",
style: Theme.of(context).textTheme.subtitle1.copyWith(color: AColors.white),
// style: Theme.of(context).textTheme.subtitle1.copyWith(color: AColors.white),
textDirection: TextDirection.rtl,
),
),

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/loaders/image_loader.dart';
@ -49,7 +48,7 @@ class ImageItem extends StatelessWidget {
child: FaIcon(
FontAwesomeIcons.playCircle,
size: 32 * AppStyle.getScaleFactor(context),
color: AColors.orange,
// color: AColors.orange,
),
),
)),

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class ReportIssueItem extends StatelessWidget {
@ -12,7 +11,7 @@ class ReportIssueItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialButton(
splashColor: AColors.secondaryColor.withOpacity(.5),
// splashColor: AColors.secondaryColor.withOpacity(.5),
padding: EdgeInsets.symmetric(vertical: 4),
onPressed: () {
onChange(issueInfo, !isSelected);

@ -2,7 +2,6 @@ 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';
@ -26,7 +25,7 @@ class LandPageItem extends StatelessWidget {
if (icon != null)
Icon(
icon,
color: AColors.primaryColor,
// color: AColors.primaryColor,
size: 42 * AppStyle.getScaleFactor(context),
),
if (svgPath != null)
@ -34,7 +33,7 @@ class LandPageItem extends StatelessWidget {
svgPath,
width: 42 * AppStyle.getScaleFactor(context),
height: 42 * AppStyle.getScaleFactor(context),
color: AColors.primaryColor,
// color: AColors.primaryColor,
),
Text(text,
style: TextStyle(

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/views/app_style/colors.dart';
class StatusLabel extends StatelessWidget {
String label;
@ -34,76 +33,76 @@ class StatusLabel extends StatelessWidget {
);
}
Color getRequestStatusColor1(String status) {
switch (status) {
case "in progress":
return AColors.statusYellowLight;
case "completed":
return AColors.statusGreenLight;
case "high priority":
return AColors.statusRedLight;
case "low priority":
return AColors.statusGreenLight;
case "open":
return AColors.statusBlue;
default:
return AColors.statusDefault;
}
}
Color getRequestStatusTextColor(String status) {
switch (status) {
case "in progress":
return AColors.statusYellow;
case "completed":
return AColors.statusGreen;
case "high priority":
return AColors.statusRed;
case "low priority":
return AColors.statusGreen;
case "open":
return AColors.statusBlue;
default:
return Colors.white;
}
}
static Color getRequestStatusColor(int id) {
switch (id) {
case 4:
return AColors.deepRed;
case 6:
return AColors.green;
case 5:
return AColors.orange;
case 8:
return AColors.green;
case 9:
return AColors.orange;
default:
return AColors.grey;
}
}
static Color getGasStatusColor(int id) {
switch (id) {
case 0:
return AColors.orange;
case 1:
return AColors.green;
default:
return AColors.grey;
}
}
static Color getPriorityStatusColor(int id) {
switch (id) {
case 0:
return AColors.orange;
case 1:
return AColors.green;
default:
return AColors.grey;
}
}
// Color getRequestStatusColor1(String status) {
// switch (status) {
// case "in progress":
// return AColors.statusYellowLight;
// case "completed":
// return AColors.statusGreenLight;
// case "high priority":
// return AColors.statusRedLight;
// case "low priority":
// return AColors.statusGreenLight;
// case "open":
// return AColors.statusBlue;
// default:
// return AColors.statusDefault;
// }
// }
//
// Color getRequestStatusTextColor(String status) {
// switch (status) {
// case "in progress":
// return AColors.statusYellow;
// case "completed":
// return AColors.statusGreen;
// case "high priority":
// return AColors.statusRed;
// case "low priority":
// return AColors.statusGreen;
// case "open":
// return AColors.statusBlue;
// default:
// return Colors.white;
// }
// }
//
// static Color getRequestStatusColor(int id) {
// switch (id) {
// case 4:
// return AColors.deepRed;
// case 6:
// return AColors.green;
// case 5:
// return AColors.orange;
// case 8:
// return AColors.green;
// case 9:
// return AColors.orange;
// default:
// return AColors.grey;
// }
// }
//
// static Color getGasStatusColor(int id) {
// switch (id) {
// case 0:
// return AColors.orange;
// case 1:
// return AColors.green;
// default:
// return AColors.grey;
// }
// }
//
// static Color getPriorityStatusColor(int id) {
// switch (id) {
// case 0:
// return AColors.orange;
// case 1:
// return AColors.green;
// default:
// return AColors.grey;
// }
// }
}

@ -5,7 +5,6 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/service_request/service_request.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';
@ -35,12 +34,15 @@ class ServiceRequestItem extends StatelessWidget {
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)),
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)),
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))),
],

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class FilterItem extends StatelessWidget {
@ -9,25 +8,25 @@ class FilterItem extends StatelessWidget {
final VoidCallback onSelected;
const FilterItem({Key key, this.status, this.isSelected, this.onSelected}) : super(key: key);
Color getStatusColor() {
switch (status.id) {
case 0:
return AColors.green;
case 4:
return AColors.deepRed;
case 6:
return AColors.green;
case 5:
return AColors.orange;
case 8:
return AColors.green;
case 9:
return AColors.orange;
default:
return AColors.grey;
}
}
//
// Color getStatusColor() {
// switch (status.id) {
// case 0:
// return AColors.green;
// case 4:
// return AColors.deepRed;
// case 6:
// return AColors.green;
// case 5:
// return AColors.orange;
// case 8:
// return AColors.green;
// case 9:
// return AColors.orange;
// default:
// return AColors.grey;
// }
// }
@override
Widget build(BuildContext context) {
@ -39,12 +38,12 @@ class FilterItem extends StatelessWidget {
style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(horizontal: 8),
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context))),
primary: getStatusColor(),
// primary: getStatusColor(),
),
child: Text(
status.name ?? "",
style: Theme.of(context).textTheme.bodyText1.copyWith(
color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
// color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
),
textScaleFactor: AppStyle.getScaleFactor(context),
),

@ -29,7 +29,7 @@ class _ASoundPlayerState extends State<ASoundPlayer> {
width: 48,
height: 48,
decoration: ShapeDecoration(
color: Colors.white,
color: AppColor.background(context),
shape: RoundedRectangleBorder(
side: BorderSide(width: 1, color: (context.isDark ? AppColor.neutral20 : AppColor.neutral30)),
borderRadius: BorderRadius.circular(32),
@ -178,27 +178,28 @@ class _ASoundPlayerState extends State<ASoundPlayer> {
SliderTheme(
data: SliderTheme.of(context).copyWith(trackHeight: 2.0, thumbShape: const RoundSliderThumbShape(enabledThumbRadius: 6.0), overlayShape: SliderComponentShape.noOverlay),
child: Slider(
value: _audioPosition?.inMilliseconds?.toDouble() ?? 0.0,
min: 0,
max: _audioTime?.inMilliseconds?.toDouble() ?? 60.0,
activeColor: context.isDark ? AppColor.primary40 : AppColor.primary70,
inactiveColor: AppColor.neutral30,
onChangeStart: (value) {
_sliderMoving = true;
},
onChanged: (value) {
_audioPosition = Duration(milliseconds: value.round());
rebuild();
},
onChangeEnd: (value) {
_sliderMoving = false;
_audioPlayer.seek(Duration(milliseconds: value.round()));
rebuild();
}),
value: _audioPosition?.inMilliseconds?.toDouble() ?? 0.0,
min: 0,
max: _audioTime?.inMilliseconds?.toDouble() ?? 60.0,
activeColor: context.isDark ? AppColor.primary40 : AppColor.primary70,
inactiveColor: context.isDark ? AppColor.neutral20 : AppColor.neutral30,
onChangeStart: (value) {
_sliderMoving = true;
},
onChanged: (value) {
_audioPosition = Duration(milliseconds: value.round());
rebuild();
},
onChangeEnd: (value) {
_sliderMoving = false;
_audioPlayer.seek(Duration(milliseconds: value.round()));
rebuild();
},
),
).paddingOnly(start: 8, end: 8).expanded,
_failedToLoad
? Text("Failed to load", style: AppTextStyle.tiny.copyWith(color: AppColor.red60))
: Text("${format(_audioPosition)}/${format(_audioTime)}", style: AppTextStyle.tiny.copyWith(color: AppColor.neutral50)),
? Text("Failed to load", style: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60))
: Text("${format(_audioPosition)}/${format(_audioTime)}", style: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)),
],
),
],

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/engineer.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class SingleEngineerMenu extends StatefulWidget {
@ -48,7 +47,7 @@ class _SingleEngineerMenuState extends State<SingleEngineerMenu> {
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: AColors.black),
// border: Border.all(color: AColors.black),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
boxShadow: const [AppStyle.boxShadow]),
child: DropdownButton<Engineer>(

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class MultiStatusMenu extends StatefulWidget {
@ -76,7 +75,7 @@ class _MultiStatusMenuState extends State<MultiStatusMenu> {
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: AColors.black),
// border: Border.all(color: AColors.black),
borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
boxShadow: const [AppStyle.boxShadow]),
child: TypeAheadField<Lookup>(

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/fault_description.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class FaultDescriptionMenu extends StatefulWidget {
@ -62,7 +61,7 @@ class _SingleStatusMenuState extends State<FaultDescriptionMenu> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: Color(0xffefefef),
),

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../../../../models/service_request/supp_engineer_work_orders.dart';
@ -64,7 +63,7 @@ class SingleAssistantEmployeeMenuState extends State<SupplierEngineersMenu> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: const Color(0xffefefef),
),

@ -67,7 +67,11 @@ class _SingleStatusMenuState extends State<SingleStatusMenu> {
height: 60.toScreenHeight,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
decoration: BoxDecoration(
color: context.isDark ? AppColor.neutral50 : Colors.white,
color: context.isDark && (widget.enabled == false || (widget.statuses?.isEmpty ?? true))
? AppColor.neutral50
: (widget.enabled == false || (widget.statuses?.isEmpty ?? true))
? AppColor.neutral40
: AppColor.background(context),
borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../../../models/engineer.dart';
@ -63,7 +62,7 @@ class _SingleUsersMenuState extends State<UsersMenu> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: Color(0xffefefef),
),

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../app_style/colors.dart';
import '../app_style/sizing.dart';
class ASwitchButton extends StatelessWidget {
@ -22,7 +21,7 @@ class ASwitchButton extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 16),
margin: const EdgeInsets.symmetric(vertical: 8),
decoration: BoxDecoration(
color: AColors.inputFieldBackgroundColor,
// color: AColors.inputFieldBackgroundColor,
border: Border.all(
color: const Color(0xffefefef),
),
@ -34,7 +33,7 @@ class ASwitchButton extends StatelessWidget {
ASubTitle(title),
Switch.adaptive(
value: value,
activeColor: AColors.primaryColor,
// activeColor: AColors.primaryColor,
onChanged: onChange,
),
],

@ -112,7 +112,7 @@ class _AppTimerState extends State<AppTimer> {
? AppColor.neutral60
: (widget.enabled == false)
? AppColor.neutral40
: Theme.of(context).cardColor,
: AppColor.background(context),
borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),
@ -129,7 +129,13 @@ class _AppTimerState extends State<AppTimer> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
(widget.label ?? "Timer").tinyFont(context),
value.bodyText(context).custom(color: widget.enabled ? AppColor.neutral50 : AppColor.neutral20),
value.bodyText(context).custom(
color: widget.enabled
? context.isDark
? AppColor.neutral30
: AppColor.neutral50
: AppColor.neutral20,
),
],
);
},

@ -6,18 +6,20 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/views/pages/user/visits/visit_details.dart';
import '../../../controllers/providers/api/user_provider.dart';
import '../../../extensions/text_extensions.dart';
import '../../app_style/colors.dart';
import '../../../models/lookup.dart';
import '../../pages/user/visits/pantry/edit_pentry.dart';
import '../requests/request_status.dart';
class VisitItem extends StatelessWidget {
final Visit visit;
final Lookup priority;
const VisitItem({Key key, this.visit}) : super(key: key);
const VisitItem({Key key, this.visit, this.priority}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -30,17 +32,19 @@ class VisitItem extends StatelessWidget {
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,
if (priority != null)
StatusLabel(
label: priority.name,
id: priority.id,
textColor: AppColor.getPriorityStatusTextColor(context, priority.id),
backgroundColor: AppColor.getPriorityStatusColor(context, priority.id),
),
if (priority != null) 8.width,
StatusLabel(
label: visit.status.name,
id: visit.status.id,
textColor: AColors.getRequestStatusTextColorByName(visit.status.name),
backgroundColor: AColors.getRequestStatusColorByName(visit.status.name),
textColor: AppColor.getRequestStatusTextColorByName(context, visit.status.name),
backgroundColor: AppColor.getRequestStatusColorByName(context, visit.status.name),
),
1.width.expanded,
],
@ -57,10 +61,10 @@ class VisitItem extends StatelessWidget {
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
],
).onPress(() {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => VisitDetailsPage(visit: visit)));
@ -76,7 +80,11 @@ class VisitItem extends StatelessWidget {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => EditPentry(visit: visit, pentry: visit.pentry)));
}),
if (userProvider.user.type == UsersTypes.engineer && visit.status.id != 270) 8.height,
Text(visit.createdOn != null ? visit.createdOn.toServiceRequestCardFormat : "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
Text(
visit.createdOn != null ? visit.createdOn.toServiceRequestCardFormat : "",
textAlign: TextAlign.end,
style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
],
)
],

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
class VisitStatusLabel extends StatelessWidget {
@ -8,29 +7,29 @@ class VisitStatusLabel extends StatelessWidget {
const VisitStatusLabel({Key key, this.visit}) : super(key: key);
Color getStatusColor() {
switch (visit.status.id) {
case 0:
return AColors.green;
case 1:
return AColors.grey;
case 2:
return AColors.grey;
default:
return AColors.grey;
}
}
// Color getStatusColor() {
// switch (visit.status.id) {
// case 0:
// return AColors.green;
// case 1:
// return AColors.grey;
// case 2:
// return AColors.grey;
// default:
// return AColors.grey;
// }
// }
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 2, horizontal: 8),
alignment: Alignment.center,
decoration: BoxDecoration(color: getStatusColor(), borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: [AppStyle.boxShadow]),
decoration: BoxDecoration(/*color: getStatusColor(),*/ borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: [AppStyle.boxShadow]),
child: Text(
visit.status.name == null || visit.status.name.isEmpty ? "no status" : visit.status.name,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
// color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
),
));
}

@ -904,11 +904,10 @@ packages:
pie_chart:
dependency: "direct main"
description:
name: pie_chart
sha256: "5dba6d0eb4718e8ed00a9079361cd8947c3f84ac5a5d76f05a27f4ec5e27589e"
url: "https://pub.dev"
source: hosted
version: "5.3.2"
path: "packages/pie_chart"
relative: true
source: path
version: "4.0.1"
platform:
dependency: transitive
description:
@ -1202,6 +1201,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.9.2"
touchable:
dependency: "direct main"
description:
name: touchable
sha256: "659dc6395f6256c20ef994a692527ea33c756e4e94f58017050687acd307d17f"
url: "https://pub.dev"
source: hosted
version: "0.2.1"
typed_data:
dependency: transitive
description:

@ -72,9 +72,11 @@ dependencies:
lottie: ^2.3.0
shimmer: ^2.0.0
flutter_advanced_switch: ^3.0.1
pie_chart: ^5.3.2
pie_chart:
path: packages/pie_chart
table_calendar: ^3.0.8
image_cropper: ^3.0.3
touchable: ^0.2.1
dev_dependencies:
flutter_test:

Loading…
Cancel
Save