diff --git a/assets/images/dashboard/chat.svg b/assets/images/dashboard/chat.svg
new file mode 100644
index 00000000..8fbebec0
--- /dev/null
+++ b/assets/images/dashboard/chat.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/dashboard/completed_icon.svg b/assets/images/dashboard/completed_icon.svg
new file mode 100644
index 00000000..516d8f3f
--- /dev/null
+++ b/assets/images/dashboard/completed_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/dashboard/inprogress_icon.svg b/assets/images/dashboard/inprogress_icon.svg
new file mode 100644
index 00000000..79b4f642
--- /dev/null
+++ b/assets/images/dashboard/inprogress_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/dashboard/notification.svg b/assets/images/dashboard/notification.svg
new file mode 100644
index 00000000..3a9181b1
--- /dev/null
+++ b/assets/images/dashboard/notification.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/dashboard/open_icon.svg b/assets/images/dashboard/open_icon.svg
new file mode 100644
index 00000000..5bbeeabd
--- /dev/null
+++ b/assets/images/dashboard/open_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart
index 8d7fce09..8e898fb4 100644
--- a/lib/dashboard_latest/dashboard_view.dart
+++ b/lib/dashboard_latest/dashboard_view.dart
@@ -105,17 +105,14 @@ class _DashboardViewState extends State {
Widget build(BuildContext context) {
final user = Provider.of(context, listen: false).user;
bool isEngineer = (user?.type) == UsersTypes.engineer;
+
///Need to check which info need to show on dashboard for quality user.
bool isQualityUser = (user?.type) == UsersTypes.qualityUser;
return Stack(
children: [
Scaffold(
- appBar: PreferredSize(
- preferredSize: const Size.fromHeight(kToolbarHeight),
- child: AppBarWidget(
- onDrawerPress: widget.onDrawerPress,
- )),
+ appBar: PreferredSize(preferredSize: const Size.fromHeight(kToolbarHeight), child: AppBarWidget(onDrawerPress: widget.onDrawerPress)),
body: RefreshIndicator(
onRefresh: () async {
getRequests();
diff --git a/lib/dashboard_latest/widgets/app_bar_widget.dart b/lib/dashboard_latest/widgets/app_bar_widget.dart
index 0621065f..261318dc 100644
--- a/lib/dashboard_latest/widgets/app_bar_widget.dart
+++ b/lib/dashboard_latest/widgets/app_bar_widget.dart
@@ -1,3 +1,5 @@
+import 'dart:io';
+
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@@ -50,19 +52,118 @@ class AppBarWidget extends StatelessWidget {
8.width,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
+ spacing: 4,
children: [
Text(
- snapshot.user?.username ?? "", // Simplified null check
- style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, fontWeight: FontWeight.w600, fontSize: context.isTablet() ? 14 : null),
+ snapshot.user?.username ?? "",
+ style: AppTextStyles.heading6.copyWith(color: AppColor.headingTextColor(context), fontSize: context.isTablet() ? 14 : null),
),
Text(
- snapshot.user?.type?.name.toCamelCase ?? "", // Simplified null check
- style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, fontSize: context.isTablet() ? 12 : null),
+ snapshot.user?.type?.name.toCamelCase ?? "",
+ style: AppTextStyles.bodyText.copyWith(color: AppColor.black92, fontSize: context.isTablet() ? 12 : null),
),
],
).expanded,
const Spacer(),
Consumer(builder: (context, settingProvider, child) {
+ return MenuAnchor(
+ style: MenuStyle(
+ backgroundColor: WidgetStateProperty.all(AppColor.background(context)),
+ shape: WidgetStateProperty.all(
+ RoundedRectangleBorder(
+ borderRadius: const BorderRadius.all(Radius.circular(20.0)),
+ side: BorderSide(color: AppColor.borderColor(context), width: 1),
+ ),
+ ),
+ padding: WidgetStateProperty.all(
+ EdgeInsets.symmetric(
+ horizontal: 0.toScreenWidth,
+ vertical: 8.toScreenHeight,
+ ),
+ ),
+ elevation: WidgetStateProperty.all(0),
+ ),
+ menuChildren: Provider.of(context, listen: false).user?.assetGroups?.map((value) {
+ return MenuItemButton(
+ onPressed: () async {
+ if (settingProvider.assetGroup != value) {
+ AssetGroup? tempGroup = ApiManager.instance.assetGroup;
+ ApiManager.instance.assetGroup = value;
+
+ Utils.showLoading(context);
+ bool isSuccess = await context.userProvider.userChangeAssetGroup();
+ Utils.hideLoading(context);
+ if (isSuccess) {
+ await context.userProvider.getMobilePermissionByUser();
+ settingProvider.setAssetGroup(value);
+ WidgetsBinding.instance.addPostFrameCallback((_) {
+ context.settingProvider.setUser(ApiManager.instance.user!);
+ context.userProvider.setUser(ApiManager.instance.user!);
+ DashBoardProvider dashBoardProvider = Provider.of(context, listen: false);
+ dashBoardProvider.setTabs(userType: settingProvider.user!.type!, context: context);
+ dashBoardProvider.getDashBoardCount(usersType: settingProvider.user!.type!);
+ dashBoardProvider.resetRequestDataList();
+ dashBoardProvider.getRequestDetail(usersType: settingProvider.user!.type!, status: dashBoardProvider.tabs[dashBoardProvider.currentListIndex].tag);
+ });
+ } else {
+ ApiManager.instance.assetGroup = tempGroup;
+ context.showConfirmDialog("Failed, Please Try again");
+ }
+ }
+ },
+ child: Text(value.name ?? "", style: AppTextStyles.bodyText2.copyWith(color: AppColor.headingTextColor(context))),
+ );
+ }).toList() ??
+ [],
+ builder: (_, MenuController controller, Widget? child) {
+ return Container(
+ padding: const EdgeInsets.all(10),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(8),
+ color: AppColor.assetGroupBackground(context),
+ border: Border.all(color: AppColor.white936.withValues(alpha: .03), width: 1),
+ boxShadow: [
+ BoxShadow(color: Colors.black.withValues(alpha: 0.03), blurRadius: 4, offset: const Offset(0, 0), spreadRadius: 0),
+ ],
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ spacing: 16,
+ children: [
+ Text(settingProvider.assetGroup?.name ?? "", style: AppTextStyles.bodyText2.copyWith(color: AppColor.headingTextColor(context))),
+ Icon(Icons.keyboard_arrow_down, color: AppColor.headingTextColor(context)),
+ ],
+ ),
+ ).onPress(() {
+ if (controller.isOpen) {
+ controller.close();
+ } else {
+ controller.open();
+ }
+ });
+ },
+ );
+
+ return Container(
+ padding: const EdgeInsets.all(10),
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(8),
+ color: AppColor.assetGroupBackground(context),
+ border: Border.all(color: AppColor.white936.withValues(alpha: .03), width: 1),
+ boxShadow: [
+ BoxShadow(color: Colors.black.withValues(alpha: 0.03), blurRadius: 4, offset: const Offset(0, 0), spreadRadius: 0),
+ ],
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ spacing: 16,
+ children: [
+ Text(settingProvider.assetGroup?.name ?? "", style: AppTextStyles.bodyText2.copyWith(color: AppColor.headingTextColor(context))),
+ Icon(Icons.keyboard_arrow_down, color: AppColor.headingTextColor(context)),
+ ],
+ ),
+ );
+
return Container(
padding: const EdgeInsets.fromLTRB(12, 6, 6, 6),
decoration: BoxDecoration(
@@ -82,11 +183,11 @@ class AppBarWidget extends StatelessWidget {
value: settingProvider.assetGroup,
//iconSize: 24,
isDense: true,
- icon: const Icon(Icons.keyboard_arrow_down),
+ icon: Icon(Icons.keyboard_arrow_down, color: AppColor.headingTextColor(context)),
elevation: 8,
// dropdownColor: Colors.amber,
borderRadius: BorderRadius.circular(8),
- style: TextStyle(color: Theme.of(context).primaryColor),
+ style: AppTextStyles.tinyFont.copyWith(color: AppColor.headingTextColor(context)),
underline: const SizedBox.shrink(),
onChanged: (newValue) async {
if (settingProvider.assetGroup != newValue) {
@@ -130,19 +231,12 @@ class AppBarWidget extends StatelessWidget {
}),
16.width,
if (context.settingProvider.isUserFlowMedical) ...[
- Icon(Icons.mark_unread_chat_alt_outlined, color: context.isDark ? AppColor.neutral30 : AppColor.neutral20, size: 30).paddingOnly(top: 6, end: 0).onPress(() {
+ ("dashboard/chat").toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).paddingOnly(top: 0, end: 0).onPress(() {
Navigator.of(context).push(CupertinoPageRoute(builder: (_) => UnReadChatList()));
}),
- 8.width,
+ 16.width,
],
- Stack(
- alignment: Alignment.topRight,
- children: [
- 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
- // ... (rest of the code remains the same)
- ],
- ).onPress(() {
+ ("dashboard/notification").toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).paddingOnly(top: 0, end: 0).onPress(() {
Navigator.of(context).pushNamed(NotificationsPage.id);
}),
],
diff --git a/lib/dashboard_latest/widgets/progress_fragment.dart b/lib/dashboard_latest/widgets/progress_fragment.dart
index e7340f8a..a7606f20 100644
--- a/lib/dashboard_latest/widgets/progress_fragment.dart
+++ b/lib/dashboard_latest/widgets/progress_fragment.dart
@@ -155,6 +155,8 @@ import 'package:pie_chart/pie_chart.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
+import 'package:test_sa/extensions/int_extensions.dart';
+import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
@@ -178,73 +180,124 @@ class ProgressFragment extends StatelessWidget {
if (isCurrentUserIsNurse) {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [
- ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor),
- ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressColor),
- ChartData('Acknowledged', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor),
+ ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor, "dashboard/open_icon"),
+ ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressColor, "dashboard/inprogress_icon"),
+ ChartData('Acknowledged', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor, "dashboard/completed_icon"),
];
} else if (_userProvider.isQualityUser) {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [
- ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor),
- ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressColor),
- ChartData('Closed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor),
+ ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor, "dashboard/open_icon"),
+ ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressColor, "dashboard/inprogress_icon"),
+ ChartData('Closed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor, "dashboard/completed_icon"),
];
} else {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [
- ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor),
- ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressColor),
- ChartData('Completed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor),
+ ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor, "dashboard/open_icon"),
+ ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressColor, "dashboard/inprogress_icon"),
+ ChartData('Completed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor, "dashboard/completed_icon"),
];
}
- //
- // int total =
- // (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.inProgressRequests?.total?.count ?? 0) + (isCurrentUserNotEngineer ? (snapshot.openRequests?.total?.count ?? 0) : 0);
- //
- // final List chartData = [
- // ChartData('Completed', snapshot.completedRequests?.total?.count?.toDouble() ?? 0.0, AppColor.green70),
- // // snapshot.openRequests?.total?.count!=0? ChartData('Open', snapshot.openRequests?.total?.count?.toDouble() ?? 0.0, AppColor.blueStatus(context)),
- // ChartData('In Progress', snapshot.inProgressRequests?.total?.count?.toDouble() ?? 0.0, AppColor.orange70),
- // ];
- //
- // if (isCurrentUserIsNurse) {
- // chartData.insert(1, ChartData('Open', snapshot.openRequests?.total?.count?.toDouble() ?? 0.0, AppColor.blueStatus(context)));
- // }
return Column(
children: [
AspectRatio(
- aspectRatio: 359 / 214,
- child: Stack(
- alignment: Alignment.center,
+ aspectRatio: (359.toScreenWidth / 214.toScreenWidth),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
children: [
- PieChart(
- dataMap: {for (var v in chartData) v.x: v.y},
- animationDuration: const Duration(milliseconds: 750),
- chartLegendSpacing: 32,
- chartRadius: MediaQuery.of(context).size.width / 3.2,
- colorList: chartData.map((element) => element.color).toList(),
- initialAngleInDegree: 270,
- chartType: ChartType.ring,
- ringStrokeWidth: 40,
- legendOptions: const LegendOptions(
- showLegendsInRow: true,
- legendPosition: LegendPosition.top,
- showLegends: true,
- legendTextStyle: TextStyle(
- fontWeight: FontWeight.w500,
+ Text(
+ "Work Order Status".addTranslation,
+ style: AppTextStyles.heading4.copyWith(color: AppColor.headingTextColor(context)),
+ ),
+ Wrap(
+ spacing: 8,
+ runSpacing: 8,
+ children: [
+ for (int i = 0; i < chartData.length; i++)
+ Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Container(
+ height: 6,
+ width: 6,
+ decoration: BoxDecoration(color: chartData[i].color, borderRadius: BorderRadius.circular(1)),
+ ),
+ 4.width,
+ Text(chartData[i].x, style: AppTextStyles.textStyle9.copyWith(color: AppColor.text9Color(context))),
+ ],
+ )
+ ],
+ ),
+ 8.height,
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ spacing: 60.toScreenWidth,
+ children: [
+ SizedBox(
+ height: 124.toScreenWidth,
+ width: 124.toScreenWidth,
+ child: PieChart(
+ dataMap: {for (var v in chartData) v.x: v.y},
+ animationDuration: const Duration(milliseconds: 750),
+ chartLegendSpacing: 0,
+ chartRadius: 124,
+ colorList: chartData.map((element) => element.color).toList(),
+ initialAngleInDegree: 270,
+ chartType: ChartType.ring,
+ ringStrokeWidth: 32,
+ legendOptions: LegendOptions(
+ showLegendsInRow: true,
+ legendPosition: LegendPosition.top,
+ showLegends: false,
+ legendTextStyle: AppTextStyles.textStyle9,
+ ),
+ chartValuesOptions: ChartValuesOptions(
+ showChartValueBackground: true,
+ chartValueBackgroundColor: const Color(0xff226187).withValues(alpha: .75),
+ chartValueStyle: AppTextStyles.textStyle9.copyWith(height: 1.5, color: Colors.white),
+ showChartValues: true,
+ showChartValuesInPercentage: true,
+ showChartValuesOutside: true,
+ decimalPlaces: 0,
+ ),
+ ).toShimmer(isShow: snapshot.isAllCountLoading, radius: 250, context: context).paddingAll(0),
),
- ),
- chartValuesOptions: const ChartValuesOptions(
- showChartValueBackground: false,
- showChartValues: false,
- showChartValuesInPercentage: false,
- showChartValuesOutside: false,
- decimalPlaces: 1,
- ),
- ).toShimmer(isShow: snapshot.isAllCountLoading, radius: 250, context: context).paddingAll(0).toShadowContainer(context, borderRadius: 20),
+ Column(
+ mainAxisAlignment: MainAxisAlignment.end,
+ spacing: 8,
+ children: [
+ for (int i = 0; i < chartData.length; i++)
+ Row(
+ spacing: 16,
+ children: [
+ chartData[i].icon.toSvgAsset(height: 26, width: 26, color: chartData[i].color).toShimmer(isShow: snapshot.isAllCountLoading, context: context),
+ Column(
+ spacing: 4,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(chartData[i].x, style: AppTextStyles.textStyle9.copyWith(color: AppColor.text9Color(context))).toShimmer(isShow: snapshot.isAllCountLoading, context: context),
+ RichText(
+ text: TextSpan(
+ text: "${chartData[i].y.toInt()}",
+ style: AppTextStyles.bodyText.copyWith(color: AppColor.headingTextColor(context)),
+ children: [
+ TextSpan(text: " | ", style: AppTextStyles.bodyText.copyWith(color: AppColor.headingTextColor(context))),
+ TextSpan(text: "${chartData[i].y}", style: AppTextStyles.bodyText.copyWith(color: AppColor.headingTextColor(context))),
+ ],
+ ),
+ ),
+ ],
+ )
+ ],
+ )
+ ],
+ )
+ ],
+ ).expanded,
],
- ),
+ ).toShadowContainer(context, borderRadius: 20, paddingObject: const EdgeInsets.symmetric(horizontal: 24, vertical: 16)),
),
],
).paddingOnly(start: 16, end: 16);
@@ -254,9 +307,10 @@ class ProgressFragment extends StatelessWidget {
}
class ChartData {
- ChartData(this.x, this.y, this.color);
+ ChartData(this.x, this.y, this.color, this.icon);
final String x;
final double y;
final Color color;
+ final String icon;
}
diff --git a/lib/dashboard_latest/widgets/requests_fragment.dart b/lib/dashboard_latest/widgets/requests_fragment.dart
index e517b472..fafe5477 100644
--- a/lib/dashboard_latest/widgets/requests_fragment.dart
+++ b/lib/dashboard_latest/widgets/requests_fragment.dart
@@ -28,11 +28,7 @@ class _DashboardCountData {
@override
bool operator ==(Object other) =>
- identical(this, other) ||
- other is _DashboardCountData &&
- runtimeType == other.runtimeType &&
- dashboardCount == other.dashboardCount &&
- isLoading == other.isLoading;
+ identical(this, other) || other is _DashboardCountData && runtimeType == other.runtimeType && dashboardCount == other.dashboardCount && isLoading == other.isLoading;
@override
int get hashCode => Object.hash(dashboardCount, isLoading);
@@ -52,10 +48,10 @@ class RequestsFragment extends StatelessWidget {
isLoading: provider.isAllCountLoading,
),
builder: (context, data, _) => GridView(
- padding: const EdgeInsets.only(left: 16, right: 16),
+ padding: const EdgeInsets.only(left: 16, right: 16, bottom: 16),
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
- gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4, childAspectRatio: 72 / 84, crossAxisSpacing: 2, mainAxisSpacing: 12),
+ gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4, childAspectRatio: 85 / 85, crossAxisSpacing: 8, mainAxisSpacing: 8),
children: [
listItem(
data.dashboardCount?.data?.countHighPriority ?? 0,
@@ -76,35 +72,31 @@ class RequestsFragment extends StatelessWidget {
}
Widget listItem(int value, String icon, String title, BuildContext context, bool isLoading, int index, Color iconColor) {
- return GestureDetector(
- onTap: isLoading
- ? null
- : () async {
- await Navigator.push(context, MaterialPageRoute(builder: (context) => RequestsListPage(index, title)));
- Provider.of(context, listen: false).refreshDashboard(userType: Provider.of(context, listen: false).user!.type!, context: context);
- },
+ return CustomBadge(
+ value: isLoading ? 0 : value,
+ positionR: -4,
+ positionT: -4,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
- mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.end,
+ spacing: 16,
children: [
- 8.height,
- CustomBadge(
- value: isLoading ? 0 : value,
- child: Container(
- child: (icon ?? "").toSvgAsset(height: 26, width: 26, color: iconColor).toShimmer(isShow: isLoading,context: context),
- ).toShadowCircleContainer(context, padding: 17),
- ),
- 10.height,
+ (icon ?? "").toSvgAsset(height: 26, width: 26, color: iconColor).toShimmer(isShow: isLoading, context: context),
Text(
title,
textAlign: TextAlign.center,
- style: AppTextStyles.tinyFont.copyWith(
- color: context.isDark ? AppColor.neutral30 : AppColor.black20,
- ),
- ).toShimmer(isShow: isLoading,context: context),
+ style: AppTextStyles.tinyFont2.copyWith(color: AppColor.headingTextColor(context)),
+ ).toShimmer(isShow: isLoading, context: context),
],
- ),
- );
+ ).toShadowContainer(context, borderRadius: 16, paddingObject: const EdgeInsets.symmetric(horizontal: 12, vertical: 16)),
+ )
+ .onPress(isLoading
+ ? null
+ : () async {
+ await Navigator.push(context, MaterialPageRoute(builder: (context) => RequestsListPage(index, title)));
+ Provider.of(context, listen: false).refreshDashboard(userType: Provider.of(context, listen: false).user!.type!, context: context);
+ })
+ .paddingOnly(end: 4, top: 4);
}
}
diff --git a/lib/extensions/text_extensions.dart b/lib/extensions/text_extensions.dart
index 5ec00e5b..da73be78 100644
--- a/lib/extensions/text_extensions.dart
+++ b/lib/extensions/text_extensions.dart
@@ -79,6 +79,7 @@ abstract class AppTextStyles {
fontSize: 21.toScreenWidth,
fontWeight: FontWeight.w500,
fontStyle: FontStyle.normal,
+ letterSpacing: -0.04,
decoration: TextDecoration.none,
);
@@ -155,6 +156,14 @@ abstract class AppTextStyles {
fontStyle: FontStyle.normal,
decoration: TextDecoration.none,
);
+
+ static final TextStyle textStyle9 = TextStyle(
+ fontSize: 9.toScreenWidth,
+ fontWeight: FontWeight.w500,
+ letterSpacing: 0,
+ fontStyle: FontStyle.normal,
+ decoration: TextDecoration.none,
+ );
}
extension CapExtension on String {
diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart
index 252971f7..8261cf34 100644
--- a/lib/extensions/widget_extensions.dart
+++ b/lib/extensions/widget_extensions.dart
@@ -128,7 +128,7 @@ extension WidgetExtensions on Widget {
width: double.infinity,
decoration: ShapeDecoration(
color: backgroundColor ?? AppColor.background(context),
- shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(borderRadius), side: BorderSide(color: borderColor)),
+ shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(borderRadius), side: BorderSide(color: AppColor.borderColor(context))),
shadows: showShadow ? [boxShadowR14] : null,
),
child: this,
diff --git a/lib/modules/tm_module/tasks/create_task_view.dart b/lib/modules/tm_module/tasks/create_task_view.dart
index c4c14366..8644ec0e 100644
--- a/lib/modules/tm_module/tasks/create_task_view.dart
+++ b/lib/modules/tm_module/tasks/create_task_view.dart
@@ -78,7 +78,7 @@ class _CreateTaskViewState extends State with TickerProviderStat
height: 56.toScreenHeight,
title: context.translation.taskType,
showShadow: false,
- backgroundColor: AppColor.fieldBgColor(context),
+ // backgroundColor: AppColor.fieldBgColor(context),
showAsBottomSheet: true,
initialValue: selectedType,
onSelect: (type) {
@@ -102,9 +102,9 @@ class _CreateTaskViewState extends State with TickerProviderStat
initialValue: _addTaskModel?.callComment,
controller: commentController,
labelText: context.translation.callComments,
- backgroundColor: AppColor.fieldBgColor(context),
labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)),
showShadow: false,
+ showBorder: true,
alignLabelWithHint: true,
textInputType: TextInputType.multiline,
onChange: (value) {
diff --git a/lib/new_views/app_style/app_color.dart b/lib/new_views/app_style/app_color.dart
index 5cba9266..67b993be 100644
--- a/lib/new_views/app_style/app_color.dart
+++ b/lib/new_views/app_style/app_color.dart
@@ -37,8 +37,12 @@ class AppColor {
static const Color neutral170 = Color(0xff6E6E6E);
//background
- static const Color backgroundLight = Color(0xfff7f9fb);
- static const Color backgroundDark = Color(0xff111427);
+ static const Color backgroundLight = Color(0xfff5f6fc);
+ static const Color backgroundDark = Color(0xff080a14);
+ static const Color backgroundTabBarDark = Color(0xff111427);
+ static const Color containerDark = Color(0xff161A2D);
+ static const Color containerBorderDark = Color(0xff3B3F56);
+ static const Color containerBorderLight = Color(0xffEFEFEF);
//white
static const Color white10 = Color(0xffFFFFFF);
@@ -57,6 +61,7 @@ class AppColor {
static const Color black20 = Color(0xff212936);
static const Color black35 = Color(0xff222A36);
static const Color black1E = Color(0xff1E1F20);
+ static const Color black92 = Color(0xff929292);
//red
static const Color red20 = Color(0xfff2c5ca);
@@ -84,7 +89,6 @@ class AppColor {
static const Color orange70 = Color(0xffFFC945);
static const Color orange80 = Color(0xff65531B);
-
// new UI colors
static const Color openColor = Color(0xff226187);
@@ -104,16 +108,30 @@ class AppColor {
static Color yellowIcon(BuildContext context) => context.isDark ? const Color(0xffFFC945) : orange70;
- static Color background(BuildContext context) => context.isDark ? neutral60 : Colors.white;
+ static Color background(BuildContext context) => context.isDark ? containerDark : Colors.white;
+ static Color scaffoldBackground(BuildContext context) => context.isDark ? backgroundDark : backgroundLight;
+ static Color assetGroupBackground(BuildContext context) => context.isDark ? containerDark : Colors.white30;
+
+ static Color backgroundTabBarColor(BuildContext context) => context.isDark ? backgroundTabBarDark : Colors.white;
+
+ static Color loadingColor(BuildContext context) => context.isDarkNotListen ? Colors.white : primary10;
+
+ static Color bottomSheetColor(BuildContext context) => context.isDarkNotListen ? containerDark : Colors.white;
+
+ static Color borderColor(BuildContext context) => context.isDark ? containerBorderDark : containerBorderLight;
static Color textColor(BuildContext context) => context.isDark ? neutral30 : neutral50;
- static Color headingTextColor(BuildContext context) => context.isDark ? neutral30 : black10;
+ static Color headingTextColor(BuildContext context) => context.isDark ? white10 : white936;
+
+ static Color text9Color(BuildContext context) => context.isDark ? white10 : neutral120;
- static Color lightTextColor(BuildContext context) => neutral120;
+ static Color lightTextColor(BuildContext context) => context.isDark ? white10 : neutral120;
static Color iconColor(BuildContext context) => context.isDark ? neutral30 : neutral50;
+ static Color icon2Color(BuildContext context) => context.isDark ? white10 : neutral50;
+
static Color fieldBgColor(BuildContext context) => context.isDark ? neutral20 : neutral100;
static Color selectedButtonColor(BuildContext context) => context.isDark ? neutral60 : neutral30;
diff --git a/lib/new_views/app_style/app_themes.dart b/lib/new_views/app_style/app_themes.dart
index 9e82c8a3..4b1834ee 100644
--- a/lib/new_views/app_style/app_themes.dart
+++ b/lib/new_views/app_style/app_themes.dart
@@ -51,9 +51,9 @@ class AppThemes {
selectedLabelStyle: ThemeData.dark().textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w500),
selectedItemColor: AppColor.primary40,
unselectedItemColor: AppColor.neutral10,
- backgroundColor: AppColor.neutral60,
+ backgroundColor: AppColor.backgroundTabBarDark,
),
- appBarTheme: AppBarTheme(elevation: 0, backgroundColor: AppColor.neutral60, iconTheme: ThemeData.dark().iconTheme.copyWith(color: AppColor.primary40)),
+ appBarTheme: AppBarTheme(elevation: 0, backgroundColor: AppColor.backgroundTabBarDark, iconTheme: ThemeData.dark().iconTheme.copyWith(color: AppColor.white10)),
cardTheme: ThemeData.dark().cardTheme.copyWith(
elevation: 3,
color: AppColor.neutral60,
diff --git a/lib/new_views/common_widgets/app_bottom_nav_bar.dart b/lib/new_views/common_widgets/app_bottom_nav_bar.dart
index 4195d6e4..d2274958 100644
--- a/lib/new_views/common_widgets/app_bottom_nav_bar.dart
+++ b/lib/new_views/common_widgets/app_bottom_nav_bar.dart
@@ -34,8 +34,7 @@ class AppBottomNavigationBar extends StatelessWidget {
boxShadow: [boxShadowR14],
),
child: BottomNavigationBar(
- // backgroundColor: Colors.white,
- backgroundColor: AppColor.background(context),
+ backgroundColor: AppColor.backgroundTabBarColor(context),
items: [
for (int i = 0; i < navItems.length; i++) navBarItem(context, index: navItems[i].index, iconName: navItems[i].iconName, label: navItems[i].label, showLabel: navItems[i].showLabel),
],
@@ -45,8 +44,8 @@ class AppBottomNavigationBar extends StatelessWidget {
},
selectedLabelStyle: AppTextStyles.tinyFont2,
unselectedLabelStyle: AppTextStyles.tinyFont2,
- selectedItemColor: Theme.of(context).bottomNavigationBarTheme.selectedItemColor,
- unselectedItemColor: Theme.of(context).bottomNavigationBarTheme.unselectedItemColor,
+ selectedItemColor: AppColor.primary90,
+ unselectedItemColor: AppColor.text9Color(context),
),
);
}
@@ -59,8 +58,8 @@ class AppBottomNavigationBar extends StatelessWidget {
height: showLabel ? 26 : 38,
color: showLabel || (showLabel && selectedIndex != 2)
? selectedIndex == index
- ? Theme.of(context).bottomNavigationBarTheme.selectedItemColor
- : Theme.of(context).bottomNavigationBarTheme.unselectedItemColor
+ ? AppColor.primary90
+ : AppColor.text9Color(context)
: null,
)
.paddingOnly(top: showLabel ? 0 : 12, bottom: showLabel ? 6 : 0),
diff --git a/lib/new_views/common_widgets/app_text_form_field.dart b/lib/new_views/common_widgets/app_text_form_field.dart
index 7600bc72..8b301d11 100644
--- a/lib/new_views/common_widgets/app_text_form_field.dart
+++ b/lib/new_views/common_widgets/app_text_form_field.dart
@@ -147,7 +147,7 @@ class _AppTextFormFieldState extends State {
_settingProvider ??= Provider.of(context, listen: false);
final border = UnderlineInputBorder(
borderSide: BorderSide.none,
- borderRadius: BorderRadius.circular(10),
+ borderRadius: BorderRadius.circular(16),
);
Widget speechToTextWidget = PopupMenuButton(
@@ -212,7 +212,7 @@ class _AppTextFormFieldState extends State {
? AppColor.neutral50
: !widget.enable
? (widget.enableColor ?? AppColor.neutral40)
- : AppColor.background(context)),
+ : AppColor.scaffoldBackground(context)),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red30),
floatingLabelStyle: widget.floatingLabelStyle ?? AppTextStyle.body1.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.white10 : AppColor.neutral20),
hintText: widget.hintText ?? "",
@@ -252,8 +252,8 @@ class _AppTextFormFieldState extends State {
if (widget.showWithoutDecoration) return textField;
return Container(
decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(10),
- border: widget.showBorder ? Border.all(color: AppColor.white10, width: 1) : null,
+ borderRadius: BorderRadius.circular(16),
+ border: widget.showBorder ? Border.all(color: AppColor.borderColor(context), width: 1) : null,
boxShadow: widget.showShadow ? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)] : null,
),
child: textField);
diff --git a/lib/new_views/common_widgets/custom_badge.dart b/lib/new_views/common_widgets/custom_badge.dart
index a048877f..20f14dd3 100644
--- a/lib/new_views/common_widgets/custom_badge.dart
+++ b/lib/new_views/common_widgets/custom_badge.dart
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/animations/number_incremental_animation.dart';
+import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
class CustomBadge extends StatelessWidget {
@@ -43,7 +44,7 @@ class CustomBadge extends StatelessWidget {
decoration: BoxDecoration(color: color, borderRadius: BorderRadius.circular(30)),
child: CounterAnimatedText(
value: value,
- style: const TextStyle(color: AppColor.white10, fontFamily: 'Poppins', fontSize: 10, fontWeight: FontWeight.w700),
+ style: AppTextStyles.tinyFont2.copyWith(color: AppColor.white10, fontWeight: FontWeight.w700),
),
),
),
diff --git a/lib/new_views/common_widgets/single_item_drop_down_menu.dart b/lib/new_views/common_widgets/single_item_drop_down_menu.dart
index a6c5214f..94383f67 100644
--- a/lib/new_views/common_widgets/single_item_drop_down_menu.dart
+++ b/lib/new_views/common_widgets/single_item_drop_down_menu.dart
@@ -232,8 +232,13 @@ class _SingleItemDropDownMenuState {
bool showAppbar = true;
late List _pages;
UserProvider? _userProvider;
- bool isFCM = true;
+ bool isFCM = true;
+
@override
void initState() {
_pages = [];
@@ -65,7 +66,7 @@ class _LandPageState extends State {
child: Container(
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(
- color: Theme.of(context).scaffoldBackgroundColor,
+ color: AppColor.bottomSheetColor(context),
borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)),
),
padding: EdgeInsets.symmetric(horizontal: 24.toScreenWidth, vertical: 24.toScreenHeight),
@@ -86,9 +87,11 @@ class _LandPageState extends State {
(Platform.isAndroid ? "fingerprint" : "faceid").toLottieAsset(height: 180),
16.height,
Align(
- alignment: AlignmentDirectional.centerStart,
- child: "Let's set up Face ID/Fingerprint for quick and secure logins in the future".bodyText(context).custom(fontWeight: FontWeight.w500),
- ),
+ alignment: AlignmentDirectional.centerStart,
+ child: Text(
+ "Let's set up Face ID/Fingerprint for quick and secure logins in the future".addTranslation,
+ style: AppTextStyles.bodyText,
+ )),
24.height,
AppFilledButton(
onPressed: () {
diff --git a/lib/new_views/pages/splash_page.dart b/lib/new_views/pages/splash_page.dart
index 392ccb74..2b619ac4 100644
--- a/lib/new_views/pages/splash_page.dart
+++ b/lib/new_views/pages/splash_page.dart
@@ -189,12 +189,12 @@ class _SplashPageState extends State {
alignment: Alignment.center,
children: [
if (loading)
- const Positioned(
+ Positioned(
bottom: 100,
child: SizedBox(
width: 36,
height: 36,
- child: CircularProgressIndicator(color: AppColor.primary10, strokeWidth: 3),
+ child: CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 3),
)),
SizedBox(
width: MediaQuery.of(context).size.width / 1.1,
diff --git a/lib/views/widgets/fullscreen_dialogs/selection_fullscreen_dialog.dart b/lib/views/widgets/fullscreen_dialogs/selection_fullscreen_dialog.dart
index 8e3b9262..d6f15741 100644
--- a/lib/views/widgets/fullscreen_dialogs/selection_fullscreen_dialog.dart
+++ b/lib/views/widgets/fullscreen_dialogs/selection_fullscreen_dialog.dart
@@ -87,7 +87,7 @@ class _SelectionBottomSheetState extends State(0),
- backgroundColor: WidgetStateProperty.all(context.isDark ? AppColor.neutral120 : null),
+ backgroundColor: WidgetStateProperty.all(AppColor.background(context)),
leading: Icon(Icons.search, color: AppColor.iconColor(context)),
textStyle: WidgetStateProperty.all(
TextStyle(color: AppColor.textColor(context), fontSize: 16.0),
diff --git a/pubspec.yaml b/pubspec.yaml
index 44bc1e86..8fde8f23 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -138,6 +138,7 @@ flutter:
- assets/
- assets/audio/
- assets/images/
+ - assets/images/dashboard/
- assets/lottie/
- assets/subtitles/
- assets/rives/