ui changes

main_production_RSG
Sikander Saleem 2 months ago
parent 95a47858d7
commit 839f878d35

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.75 6.5C5.75 3.60051 8.10051 1.25 11 1.25C13.8995 1.25 16.25 3.60051 16.25 6.5C16.25 9.39949 13.8995 11.75 11 11.75C8.10051 11.75 5.75 9.39949 5.75 6.5ZM11 2.75C8.92893 2.75 7.25 4.42893 7.25 6.5C7.25 8.57107 8.92893 10.25 11 10.25C13.0711 10.25 14.75 8.57107 14.75 6.5C14.75 4.42893 13.0711 2.75 11 2.75Z" fill="#3B3D4A"/>
<path d="M11.9304 14.7933C11.2683 14.7315 10.6013 14.7358 9.94059 14.8063C8.551 14.9544 7.18949 15.3948 5.96145 16.126C5.79356 16.226 5.60958 16.3303 5.41688 16.4397C4.70427 16.8439 3.87223 17.316 3.29214 17.8838C2.93202 18.2363 2.77851 18.5271 2.75395 18.7517C2.73445 18.9301 2.77955 19.2242 3.23018 19.6536C4.26603 20.6404 5.31861 21.25 6.59105 21.25H13.0002C13.4144 21.25 13.7502 21.5858 13.7502 22C13.7502 22.4142 13.4144 22.75 13.0002 22.75H6.59105C4.77274 22.75 3.36695 21.8556 2.19552 20.7396C1.5165 20.0927 1.17802 19.3646 1.26283 18.5887C1.34257 17.8592 1.78122 17.2637 2.24289 16.8118C2.98107 16.0893 4.05859 15.4814 4.7714 15.0792C4.93406 14.9875 5.07773 14.9064 5.19404 14.8372C7.28813 13.5903 9.70985 13.0794 12.0699 13.2998C12.4824 13.3384 12.7855 13.7039 12.7469 14.1163C12.7084 14.5288 12.3428 14.8319 11.9304 14.7933Z" fill="#3B3D4A"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.6 13.25C15.1975 13.25 13.25 15.1975 13.25 17.6C13.25 20.0025 15.1975 21.95 17.6 21.95C18.5304 21.95 19.3925 21.6579 20.0998 21.1605L21.4697 22.5303C21.7626 22.8232 22.2374 22.8232 22.5303 22.5303C22.8232 22.2374 22.8232 21.7626 22.5303 21.4697L21.1605 20.0998C21.6579 19.3925 21.95 18.5304 21.95 17.6C21.95 15.1975 20.0025 13.25 17.6 13.25ZM14.75 17.6C14.75 16.026 16.026 14.75 17.6 14.75C19.174 14.75 20.45 16.026 20.45 17.6C20.45 19.174 19.174 20.45 17.6 20.45C16.026 20.45 14.75 19.174 14.75 17.6Z" fill="#3B3D4A"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.3046 8.19232C17.6708 8.55853 17.6708 9.15216 17.3046 9.51819L11.0153 15.8077C10.649 16.1737 10.0556 16.1737 9.68939 15.8077L6.69543 12.8135C6.32922 12.4475 6.32922 11.8539 6.69543 11.4879C7.06146 11.1216 7.65509 11.1216 8.02112 11.4879L10.3522 13.819L15.9787 8.19232C16.3449 7.82629 16.9385 7.82629 17.3046 8.19232ZM24 12C24 18.633 18.6321 24 12 24C5.367 24 0 18.6321 0 12C0 5.367 5.36792 0 12 0C18.633 0 24 5.36792 24 12ZM22.125 12C22.125 6.40338 17.5959 1.875 12 1.875C6.40338 1.875 1.875 6.40411 1.875 12C1.875 17.5966 6.40411 22.125 12 22.125C17.5966 22.125 22.125 17.5959 22.125 12Z" fill="#92D9F8"/>
</svg>

After

Width:  |  Height:  |  Size: 722 B

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 24C8.79469 24 5.78123 22.7518 3.51469 20.4853C1.24823 18.2188 0 15.2053 0 12V11.0625H1.875V12C1.875 14.7045 2.92819 17.2471 4.84055 19.1595C6.75291 21.0718 9.29555 22.125 12 22.125C14.7045 22.125 17.2471 21.0718 19.1595 19.1595C21.0718 17.2471 22.125 14.7045 22.125 12C22.125 9.29555 21.0718 6.75291 19.1595 4.84055C17.2471 2.92819 14.7045 1.875 12 1.875H11.0625V0H12C15.2053 0 18.2188 1.24823 20.4853 3.51469C22.7518 5.78123 24 8.79469 24 12C24 15.2053 22.7518 18.2188 20.4853 20.4853C18.2188 22.7518 15.2053 24 12 24ZM2.28698 8.99147L0.554672 8.27391L1.27228 6.54164L3.0045 7.2592L2.28698 8.99147ZM4.17759 5.50345L2.85178 4.17764L4.17764 2.85178L5.50345 4.17759L4.17759 5.50345ZM7.2592 3.0045L6.54164 1.27228L8.27391 0.554672L8.99147 2.28698L7.2592 3.0045Z" fill="#226187"/>
<path d="M17.3037 9.51836C17.6699 9.15233 17.6699 8.5587 17.3037 8.19249C16.9377 7.82646 16.3441 7.82646 15.9778 8.19249L10.3514 13.8191L8.02026 11.488C7.65424 11.1218 7.06061 11.1218 6.69458 11.488C6.32837 11.854 6.32837 12.4477 6.69458 12.8137L9.68854 15.8078C10.0547 16.1739 10.6482 16.1739 11.0144 15.8078L17.3037 9.51836Z" fill="#226187"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,4 @@
<svg width="19" height="26" viewBox="0 0 19 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.10938 26H11.1719C11.7328 26 12.1875 25.5453 12.1875 24.9844C12.1875 24.4234 11.7328 23.9688 11.1719 23.9688H7.10938C6.54845 23.9688 6.09375 24.4234 6.09375 24.9844C6.09375 25.5453 6.54845 26 7.10938 26Z" fill="#212936"/>
<path d="M9.14062 0C8.5797 0 8.125 0.454695 8.125 1.01562V2.10412C4.68432 2.59843 2.03125 5.56532 2.03125 9.14062V15.3845C2.03125 15.7424 1.87002 16.068 1.63013 16.1947C0.624609 16.7257 0 17.7587 0 18.8906C0 20.5707 1.36683 21.9375 3.04688 21.9375H15.2344C16.9144 21.9375 18.2812 20.5707 18.2812 18.8906C18.2812 17.7587 17.6566 16.7257 16.6511 16.1947C16.4112 16.0681 16.25 15.7424 16.25 15.3845V9.14062C16.25 5.56532 13.5969 2.59843 10.1562 2.10412V1.01562C10.1562 0.454695 9.70155 0 9.14062 0ZM14.2188 9.14062V15.3845C14.2188 16.5089 14.7873 17.5076 15.7027 17.9909C16.0403 18.1692 16.25 18.5139 16.25 18.8906C16.25 19.4506 15.7944 19.9062 15.2344 19.9062H3.04688C2.48686 19.9062 2.03125 19.4506 2.03125 18.8906C2.03125 18.5139 2.24098 18.1692 2.57857 17.9909C3.4939 17.5076 4.0625 16.5089 4.0625 15.3845V9.14062C4.0625 6.34055 6.34055 4.0625 9.14062 4.0625C11.9407 4.0625 14.2188 6.34055 14.2188 9.14062Z" fill="#212936"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 24C8.79469 24 5.78123 22.7518 3.51469 20.4853C1.24823 18.2188 0 15.2053 0 12V11.0625H1.875V12C1.875 14.7045 2.92819 17.2471 4.84055 19.1595C6.75291 21.0718 9.29555 22.125 12 22.125C14.7045 22.125 17.2471 21.0718 19.1595 19.1595C21.0718 17.2471 22.125 14.7045 22.125 12C22.125 9.29555 21.0718 6.75291 19.1595 4.84055C17.2471 2.92819 14.7045 1.875 12 1.875H11.0625V0H12C15.2053 0 18.2188 1.24823 20.4853 3.51469C22.7518 5.78123 24 8.79469 24 12C24 15.2053 22.7518 18.2188 20.4853 20.4853C18.2188 22.7518 15.2053 24 12 24ZM2.28698 8.99147L0.554672 8.27391L1.27228 6.54164L3.0045 7.2592L2.28698 8.99147ZM4.17759 5.50345L2.85178 4.17764L4.17764 2.85178L5.50345 4.17759L4.17759 5.50345ZM7.2592 3.0045L6.54164 1.27228L8.27391 0.554672L8.99147 2.28698L7.2592 3.0045Z" fill="#3DA5E5"/>
</svg>

After

Width:  |  Height:  |  Size: 893 B

@ -105,17 +105,14 @@ class _DashboardViewState extends State<DashboardView> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final user = Provider.of<UserProvider>(context, listen: false).user; final user = Provider.of<UserProvider>(context, listen: false).user;
bool isEngineer = (user?.type) == UsersTypes.engineer; bool isEngineer = (user?.type) == UsersTypes.engineer;
///Need to check which info need to show on dashboard for quality user. ///Need to check which info need to show on dashboard for quality user.
bool isQualityUser = (user?.type) == UsersTypes.qualityUser; bool isQualityUser = (user?.type) == UsersTypes.qualityUser;
return Stack( return Stack(
children: [ children: [
Scaffold( Scaffold(
appBar: PreferredSize( appBar: PreferredSize(preferredSize: const Size.fromHeight(kToolbarHeight), child: AppBarWidget(onDrawerPress: widget.onDrawerPress)),
preferredSize: const Size.fromHeight(kToolbarHeight),
child: AppBarWidget(
onDrawerPress: widget.onDrawerPress,
)),
body: RefreshIndicator( body: RefreshIndicator(
onRefresh: () async { onRefresh: () async {
getRequests(); getRequests();

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -50,19 +52,118 @@ class AppBarWidget extends StatelessWidget {
8.width, 8.width,
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
spacing: 4,
children: [ children: [
Text( Text(
snapshot.user?.username ?? "", // Simplified null check snapshot.user?.username ?? "",
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, fontWeight: FontWeight.w600, fontSize: context.isTablet() ? 14 : null), style: AppTextStyles.heading6.copyWith(color: AppColor.headingTextColor(context), fontSize: context.isTablet() ? 14 : null),
), ),
Text( Text(
snapshot.user?.type?.name.toCamelCase ?? "", // Simplified null check snapshot.user?.type?.name.toCamelCase ?? "",
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, fontSize: context.isTablet() ? 12 : null), style: AppTextStyles.bodyText.copyWith(color: AppColor.black92, fontSize: context.isTablet() ? 12 : null),
), ),
], ],
).expanded, ).expanded,
const Spacer(), const Spacer(),
Consumer<SettingProvider>(builder: (context, settingProvider, child) { Consumer<SettingProvider>(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<UserProvider>(context, listen: false).user?.assetGroups?.map<MenuItemButton>((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<DashBoardProvider>(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( return Container(
padding: const EdgeInsets.fromLTRB(12, 6, 6, 6), padding: const EdgeInsets.fromLTRB(12, 6, 6, 6),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -82,11 +183,11 @@ class AppBarWidget extends StatelessWidget {
value: settingProvider.assetGroup, value: settingProvider.assetGroup,
//iconSize: 24, //iconSize: 24,
isDense: true, isDense: true,
icon: const Icon(Icons.keyboard_arrow_down), icon: Icon(Icons.keyboard_arrow_down, color: AppColor.headingTextColor(context)),
elevation: 8, elevation: 8,
// dropdownColor: Colors.amber, // dropdownColor: Colors.amber,
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
style: TextStyle(color: Theme.of(context).primaryColor), style: AppTextStyles.tinyFont.copyWith(color: AppColor.headingTextColor(context)),
underline: const SizedBox.shrink(), underline: const SizedBox.shrink(),
onChanged: (newValue) async { onChanged: (newValue) async {
if (settingProvider.assetGroup != newValue) { if (settingProvider.assetGroup != newValue) {
@ -130,19 +231,12 @@ class AppBarWidget extends StatelessWidget {
}), }),
16.width, 16.width,
if (context.settingProvider.isUserFlowMedical) ...[ 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())); Navigator.of(context).push(CupertinoPageRoute(builder: (_) => UnReadChatList()));
}), }),
8.width, 16.width,
], ],
Stack( ("dashboard/notification").toSvgAsset(height: 24, width: 24, color: AppColor.icon2Color(context)).paddingOnly(top: 0, end: 0).onPress(() {
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(() {
Navigator.of(context).pushNamed(NotificationsPage.id); Navigator.of(context).pushNamed(NotificationsPage.id);
}), }),
], ],

@ -155,6 +155,8 @@ import 'package:pie_chart/pie_chart.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.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/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
@ -178,73 +180,124 @@ class ProgressFragment extends StatelessWidget {
if (isCurrentUserIsNurse) { if (isCurrentUserIsNurse) {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0); total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [ chartData = [
ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor), 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), 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), ChartData('Acknowledged', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor, "dashboard/completed_icon"),
]; ];
} else if (_userProvider.isQualityUser) { } else if (_userProvider.isQualityUser) {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0); total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [ chartData = [
ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor), 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), 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), ChartData('Closed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeColor, "dashboard/completed_icon"),
]; ];
} else { } else {
total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0); total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0);
chartData = [ chartData = [
ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openColor), 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), 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), 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 = [
// 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( return Column(
children: [ children: [
AspectRatio( AspectRatio(
aspectRatio: 359 / 214, aspectRatio: (359.toScreenWidth / 214.toScreenWidth),
child: Stack( child: Column(
alignment: Alignment.center, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
PieChart( Text(
dataMap: {for (var v in chartData) v.x: v.y}, "Work Order Status".addTranslation,
animationDuration: const Duration(milliseconds: 750), style: AppTextStyles.heading4.copyWith(color: AppColor.headingTextColor(context)),
chartLegendSpacing: 32, ),
chartRadius: MediaQuery.of(context).size.width / 3.2, Wrap(
colorList: chartData.map((element) => element.color).toList(), spacing: 8,
initialAngleInDegree: 270, runSpacing: 8,
chartType: ChartType.ring, children: [
ringStrokeWidth: 40, for (int i = 0; i < chartData.length; i++)
legendOptions: const LegendOptions( Row(
showLegendsInRow: true, mainAxisSize: MainAxisSize.min,
legendPosition: LegendPosition.top, children: [
showLegends: true, Container(
legendTextStyle: TextStyle( height: 6,
fontWeight: FontWeight.w500, 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),
), ),
), Column(
chartValuesOptions: const ChartValuesOptions( mainAxisAlignment: MainAxisAlignment.end,
showChartValueBackground: false, spacing: 8,
showChartValues: false, children: [
showChartValuesInPercentage: false, for (int i = 0; i < chartData.length; i++)
showChartValuesOutside: false, Row(
decimalPlaces: 1, spacing: 16,
), children: [
).toShimmer(isShow: snapshot.isAllCountLoading, radius: 250, context: context).paddingAll(0).toShadowContainer(context, borderRadius: 20), 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); ).paddingOnly(start: 16, end: 16);
@ -254,9 +307,10 @@ class ProgressFragment extends StatelessWidget {
} }
class ChartData { class ChartData {
ChartData(this.x, this.y, this.color); ChartData(this.x, this.y, this.color, this.icon);
final String x; final String x;
final double y; final double y;
final Color color; final Color color;
final String icon;
} }

@ -28,11 +28,7 @@ class _DashboardCountData {
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
identical(this, other) || identical(this, other) || other is _DashboardCountData && runtimeType == other.runtimeType && dashboardCount == other.dashboardCount && isLoading == other.isLoading;
other is _DashboardCountData &&
runtimeType == other.runtimeType &&
dashboardCount == other.dashboardCount &&
isLoading == other.isLoading;
@override @override
int get hashCode => Object.hash(dashboardCount, isLoading); int get hashCode => Object.hash(dashboardCount, isLoading);
@ -52,10 +48,10 @@ class RequestsFragment extends StatelessWidget {
isLoading: provider.isAllCountLoading, isLoading: provider.isAllCountLoading,
), ),
builder: (context, data, _) => GridView( 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(), physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true, 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: [ children: [
listItem( listItem(
data.dashboardCount?.data?.countHighPriority ?? 0, 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) { Widget listItem(int value, String icon, String title, BuildContext context, bool isLoading, int index, Color iconColor) {
return GestureDetector( return CustomBadge(
onTap: isLoading value: isLoading ? 0 : value,
? null positionR: -4,
: () async { positionT: -4,
await Navigator.push(context, MaterialPageRoute(builder: (context) => RequestsListPage(index, title)));
Provider.of<DashBoardProvider>(context, listen: false).refreshDashboard(userType: Provider.of<SettingProvider>(context, listen: false).user!.type!, context: context);
},
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end,
spacing: 16,
children: [ children: [
8.height, (icon ?? "").toSvgAsset(height: 26, width: 26, color: iconColor).toShimmer(isShow: isLoading, context: context),
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,
Text( Text(
title, title,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: AppTextStyles.tinyFont.copyWith( style: AppTextStyles.tinyFont2.copyWith(color: AppColor.headingTextColor(context)),
color: context.isDark ? AppColor.neutral30 : AppColor.black20, ).toShimmer(isShow: isLoading, context: 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<DashBoardProvider>(context, listen: false).refreshDashboard(userType: Provider.of<SettingProvider>(context, listen: false).user!.type!, context: context);
})
.paddingOnly(end: 4, top: 4);
} }
} }

@ -79,6 +79,7 @@ abstract class AppTextStyles {
fontSize: 21.toScreenWidth, fontSize: 21.toScreenWidth,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
fontStyle: FontStyle.normal, fontStyle: FontStyle.normal,
letterSpacing: -0.04,
decoration: TextDecoration.none, decoration: TextDecoration.none,
); );
@ -155,6 +156,14 @@ abstract class AppTextStyles {
fontStyle: FontStyle.normal, fontStyle: FontStyle.normal,
decoration: TextDecoration.none, 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 { extension CapExtension on String {

@ -128,7 +128,7 @@ extension WidgetExtensions on Widget {
width: double.infinity, width: double.infinity,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color: backgroundColor ?? AppColor.background(context), 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, shadows: showShadow ? [boxShadowR14] : null,
), ),
child: this, child: this,

@ -78,7 +78,7 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
height: 56.toScreenHeight, height: 56.toScreenHeight,
title: context.translation.taskType, title: context.translation.taskType,
showShadow: false, showShadow: false,
backgroundColor: AppColor.fieldBgColor(context), // backgroundColor: AppColor.fieldBgColor(context),
showAsBottomSheet: true, showAsBottomSheet: true,
initialValue: selectedType, initialValue: selectedType,
onSelect: (type) { onSelect: (type) {
@ -102,9 +102,9 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
initialValue: _addTaskModel?.callComment, initialValue: _addTaskModel?.callComment,
controller: commentController, controller: commentController,
labelText: context.translation.callComments, labelText: context.translation.callComments,
backgroundColor: AppColor.fieldBgColor(context),
labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)),
showShadow: false, showShadow: false,
showBorder: true,
alignLabelWithHint: true, alignLabelWithHint: true,
textInputType: TextInputType.multiline, textInputType: TextInputType.multiline,
onChange: (value) { onChange: (value) {

@ -37,8 +37,12 @@ class AppColor {
static const Color neutral170 = Color(0xff6E6E6E); static const Color neutral170 = Color(0xff6E6E6E);
//background //background
static const Color backgroundLight = Color(0xfff7f9fb); static const Color backgroundLight = Color(0xfff5f6fc);
static const Color backgroundDark = Color(0xff111427); 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 //white
static const Color white10 = Color(0xffFFFFFF); static const Color white10 = Color(0xffFFFFFF);
@ -57,6 +61,7 @@ class AppColor {
static const Color black20 = Color(0xff212936); static const Color black20 = Color(0xff212936);
static const Color black35 = Color(0xff222A36); static const Color black35 = Color(0xff222A36);
static const Color black1E = Color(0xff1E1F20); static const Color black1E = Color(0xff1E1F20);
static const Color black92 = Color(0xff929292);
//red //red
static const Color red20 = Color(0xfff2c5ca); static const Color red20 = Color(0xfff2c5ca);
@ -84,7 +89,6 @@ class AppColor {
static const Color orange70 = Color(0xffFFC945); static const Color orange70 = Color(0xffFFC945);
static const Color orange80 = Color(0xff65531B); static const Color orange80 = Color(0xff65531B);
// new UI colors // new UI colors
static const Color openColor = Color(0xff226187); 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 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 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 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 fieldBgColor(BuildContext context) => context.isDark ? neutral20 : neutral100;
static Color selectedButtonColor(BuildContext context) => context.isDark ? neutral60 : neutral30; static Color selectedButtonColor(BuildContext context) => context.isDark ? neutral60 : neutral30;

@ -51,9 +51,9 @@ class AppThemes {
selectedLabelStyle: ThemeData.dark().textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w500), selectedLabelStyle: ThemeData.dark().textTheme.bodySmall?.copyWith(fontWeight: FontWeight.w500),
selectedItemColor: AppColor.primary40, selectedItemColor: AppColor.primary40,
unselectedItemColor: AppColor.neutral10, 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( cardTheme: ThemeData.dark().cardTheme.copyWith(
elevation: 3, elevation: 3,
color: AppColor.neutral60, color: AppColor.neutral60,

@ -34,8 +34,7 @@ class AppBottomNavigationBar extends StatelessWidget {
boxShadow: [boxShadowR14], boxShadow: [boxShadowR14],
), ),
child: BottomNavigationBar( child: BottomNavigationBar(
// backgroundColor: Colors.white, backgroundColor: AppColor.backgroundTabBarColor(context),
backgroundColor: AppColor.background(context),
items: <BottomNavigationBarItem>[ items: <BottomNavigationBarItem>[
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), 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, selectedLabelStyle: AppTextStyles.tinyFont2,
unselectedLabelStyle: AppTextStyles.tinyFont2, unselectedLabelStyle: AppTextStyles.tinyFont2,
selectedItemColor: Theme.of(context).bottomNavigationBarTheme.selectedItemColor, selectedItemColor: AppColor.primary90,
unselectedItemColor: Theme.of(context).bottomNavigationBarTheme.unselectedItemColor, unselectedItemColor: AppColor.text9Color(context),
), ),
); );
} }
@ -59,8 +58,8 @@ class AppBottomNavigationBar extends StatelessWidget {
height: showLabel ? 26 : 38, height: showLabel ? 26 : 38,
color: showLabel || (showLabel && selectedIndex != 2) color: showLabel || (showLabel && selectedIndex != 2)
? selectedIndex == index ? selectedIndex == index
? Theme.of(context).bottomNavigationBarTheme.selectedItemColor ? AppColor.primary90
: Theme.of(context).bottomNavigationBarTheme.unselectedItemColor : AppColor.text9Color(context)
: null, : null,
) )
.paddingOnly(top: showLabel ? 0 : 12, bottom: showLabel ? 6 : 0), .paddingOnly(top: showLabel ? 0 : 12, bottom: showLabel ? 6 : 0),

@ -147,7 +147,7 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
_settingProvider ??= Provider.of(context, listen: false); _settingProvider ??= Provider.of(context, listen: false);
final border = UnderlineInputBorder( final border = UnderlineInputBorder(
borderSide: BorderSide.none, borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(16),
); );
Widget speechToTextWidget = PopupMenuButton<String>( Widget speechToTextWidget = PopupMenuButton<String>(
@ -212,7 +212,7 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
? AppColor.neutral50 ? AppColor.neutral50
: !widget.enable : !widget.enable
? (widget.enableColor ?? AppColor.neutral40) ? (widget.enableColor ?? AppColor.neutral40)
: AppColor.background(context)), : AppColor.scaffoldBackground(context)),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red30), 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), floatingLabelStyle: widget.floatingLabelStyle ?? AppTextStyle.body1.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.white10 : AppColor.neutral20),
hintText: widget.hintText ?? "", hintText: widget.hintText ?? "",
@ -252,8 +252,8 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
if (widget.showWithoutDecoration) return textField; if (widget.showWithoutDecoration) return textField;
return Container( return Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(16),
border: widget.showBorder ? Border.all(color: AppColor.white10, width: 1) : null, 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, boxShadow: widget.showShadow ? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)] : null,
), ),
child: textField); child: textField);

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test_sa/animations/number_incremental_animation.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'; import 'package:test_sa/new_views/app_style/app_color.dart';
class CustomBadge extends StatelessWidget { class CustomBadge extends StatelessWidget {
@ -43,7 +44,7 @@ class CustomBadge extends StatelessWidget {
decoration: BoxDecoration(color: color, borderRadius: BorderRadius.circular(30)), decoration: BoxDecoration(color: color, borderRadius: BorderRadius.circular(30)),
child: CounterAnimatedText( child: CounterAnimatedText(
value: value, 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),
), ),
), ),
), ),

@ -232,8 +232,13 @@ class _SingleItemDropDownMenuState<T extends Base, X extends LoadingListNotifier
? AppColor.neutral20 ? AppColor.neutral20
: (widget.enabled == false || isEmpty) : (widget.enabled == false || isEmpty)
? AppColor.neutral40 ? AppColor.neutral40
: widget.backgroundColor ?? AppColor.background(context), : widget.backgroundColor ?? AppColor.scaffoldBackground(context),
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(16),
border: Border.all(
color: AppColor.borderColor(context), width: 1
),
// side: RoundedRectangleBorder(borderRadius: BorderRadius.circular(borderRadius), side: BorderSide(color: AppColor.borderColor(context))),
// border: BorderSi//de(color: AppColor.borderColor(context)),
boxShadow: widget.showShadow ? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)] : null, boxShadow: widget.showShadow ? [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)] : null,
), ),
child: Row( child: Row(

@ -45,7 +45,8 @@ class _LandPageState extends State<LandPage> {
bool showAppbar = true; bool showAppbar = true;
late List<Widget> _pages; late List<Widget> _pages;
UserProvider? _userProvider; UserProvider? _userProvider;
bool isFCM = true; bool isFCM = true;
@override @override
void initState() { void initState() {
_pages = <Widget>[]; _pages = <Widget>[];
@ -65,7 +66,7 @@ class _LandPageState extends State<LandPage> {
child: Container( child: Container(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).scaffoldBackgroundColor, color: AppColor.bottomSheetColor(context),
borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)), borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)),
), ),
padding: EdgeInsets.symmetric(horizontal: 24.toScreenWidth, vertical: 24.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 24.toScreenWidth, vertical: 24.toScreenHeight),
@ -86,9 +87,11 @@ class _LandPageState extends State<LandPage> {
(Platform.isAndroid ? "fingerprint" : "faceid").toLottieAsset(height: 180), (Platform.isAndroid ? "fingerprint" : "faceid").toLottieAsset(height: 180),
16.height, 16.height,
Align( Align(
alignment: AlignmentDirectional.centerStart, 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), child: Text(
), "Let's set up Face ID/Fingerprint for quick and secure logins in the future".addTranslation,
style: AppTextStyles.bodyText,
)),
24.height, 24.height,
AppFilledButton( AppFilledButton(
onPressed: () { onPressed: () {

@ -189,12 +189,12 @@ class _SplashPageState extends State<SplashPage> {
alignment: Alignment.center, alignment: Alignment.center,
children: [ children: [
if (loading) if (loading)
const Positioned( Positioned(
bottom: 100, bottom: 100,
child: SizedBox( child: SizedBox(
width: 36, width: 36,
height: 36, height: 36,
child: CircularProgressIndicator(color: AppColor.primary10, strokeWidth: 3), child: CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 3),
)), )),
SizedBox( SizedBox(
width: MediaQuery.of(context).size.width / 1.1, width: MediaQuery.of(context).size.width / 1.1,

@ -87,7 +87,7 @@ class _SelectionBottomSheetState<T extends Base> extends State<SelectionFullScre
SearchBar( SearchBar(
focusNode: searchFocusNode, focusNode: searchFocusNode,
elevation: WidgetStateProperty.all<double>(0), elevation: WidgetStateProperty.all<double>(0),
backgroundColor: WidgetStateProperty.all<Color?>(context.isDark ? AppColor.neutral120 : null), backgroundColor: WidgetStateProperty.all<Color?>(AppColor.background(context)),
leading: Icon(Icons.search, color: AppColor.iconColor(context)), leading: Icon(Icons.search, color: AppColor.iconColor(context)),
textStyle: WidgetStateProperty.all<TextStyle>( textStyle: WidgetStateProperty.all<TextStyle>(
TextStyle(color: AppColor.textColor(context), fontSize: 16.0), TextStyle(color: AppColor.textColor(context), fontSize: 16.0),

@ -138,6 +138,7 @@ flutter:
- assets/ - assets/
- assets/audio/ - assets/audio/
- assets/images/ - assets/images/
- assets/images/dashboard/
- assets/lottie/ - assets/lottie/
- assets/subtitles/ - assets/subtitles/
- assets/rives/ - assets/rives/

Loading…
Cancel
Save