improvements

main_production_RSG
Sikander Saleem 2 months ago
parent 2df24e387c
commit 569fbe4df7

@ -192,7 +192,7 @@ class FooterActionButton {
child: AppFilledButton(
label: context.translation.iHaveArrived,
showIcon: true,
icon: 'arrived_icon'.toSvgAsset(),
icon: 'arrived_icon'.toSvgAsset(color: AppColor.background(context)),
buttonColor: AppColor.green70,
onPressed: () async {
Navigator.push(context, MaterialPageRoute(builder: (context) => const VerifyArrivalView()));

@ -61,14 +61,14 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
_attachments = requestProvider.currentWorkOrder?.data?.workOrderAttachments.where((e) => e.createdBy == userProvider.user?.userID).toList() ?? [];
}
bool showInitialVisitCard = requestProvider.currentWorkOrder!.data!.needAVisitDateTime != null &&
bool showInitialVisitCard = requestProvider.currentWorkOrder?.data?.needAVisitDateTime != null &&
userProvider.user?.type == UsersTypes.engineer &&
requestProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived;
bool showAssetDetailCard = (userProvider.user?.type == UsersTypes.engineer && requestProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.activity) ||
requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived;
bool showAssetDetailCard = (userProvider.user?.type == UsersTypes.engineer && requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.activity) ||
requestProvider.isReadOnlyRequest;
bool showCostCard = context.userProvider.user!.type == UsersTypes.engineer &&
!requestProvider.isReadOnlyRequest &&
requestProvider.currentWorkOrder!.data!.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.activity;
requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.activity;
return requestProvider.isLoading
? CircularProgressIndicator(color: AppColor.loadingColor(context)).center

@ -15,6 +15,8 @@ import 'package:test_sa/modules/cm_module/cm_request_utils.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/views/widgets/item_views/info_header_widget.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import 'package:test_sa/views/widgets/qr/scan_qr.dart';
@ -53,9 +55,10 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
? CircularProgressIndicator(color: AppColor.loadingColor(context)).center
: requestDetailProvider.arrivalTypeList.isEmpty
? const NoDataFound().center
: ListView.builder(
: ListView.separated(
padding: EdgeInsets.zero,
itemCount: requestDetailProvider.arrivalTypeList.length,
separatorBuilder: (cxt, index) => 12.height,
itemBuilder: (builderContext, index) {
final item = requestDetailProvider.arrivalTypeList[index];
return customListItem(
@ -75,40 +78,24 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
Widget customListItem({required String icon, required String heading, required String subHeading, required VoidCallback onTap, bool isLoading = false}) {
return GestureDetector(
onTap: onTap, // Handles the tap
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(14), // Circular border radius
),
color: AppColor.background(context),
onTap: onTap, // Handles the tap
child: Row(
crossAxisAlignment: CrossAxisAlignment.center, // Align items at the top
crossAxisAlignment: CrossAxisAlignment.center,
spacing: 12,
children: [
icon.toSvgAsset(width: 30, color: AppColor.neutral120, height: 30).paddingOnly(top: 0),
12.width,
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
heading,
style: AppTextStyles.heading6.copyWith(color: AppColor.textColor(context)),
),
6.height,
Text(
subHeading,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120),
),
],
),
),
12.width,
SizedBox(width: 24, height: 24, child: isLoading ? CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 2) : const SizedBox())
icon.toSvgAsset(width: 26, color: AppColor.icon2Color(context), height: 26).paddingOnly(top: 0),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
InfoHeader16Widget(heading),
6.height,
InfoTextWidget(label: subHeading, showEmptyValue: true, isMsg: true),
],
).expanded,
SizedBox(width: 24, height: 24, child: isLoading ? CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 2) : const SizedBox())
],
).paddingAll(12),
),
);
).toShadowContainer(context, paddingObject: const EdgeInsets.only(left: 16, right: 16, top: 12, bottom: 12)));
}
void onItemTap({required CMDetailProvider requestDetailProvider, required BuildContext context, int? verificationTypeId}) async {

@ -9,6 +9,8 @@ import 'package:test_sa/modules/cm_module/cm_detail_provider.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/views/widgets/item_views/info_header_widget.dart';
import 'package:test_sa/views/widgets/item_views/info_text_widget.dart';
class VerifyOtpView extends StatelessWidget {
const VerifyOtpView({Key? key}) : super(key: key);
@ -18,14 +20,14 @@ class VerifyOtpView extends StatelessWidget {
final defaultPinTheme = PinTheme(
width: 51.toScreenWidth,
height: 63.toScreenHeight,
textStyle: const TextStyle(fontSize: 22, color: Colors.black),
textStyle: TextStyle(fontSize: 24, color: AppColor.headingTextColor(context)),
decoration: BoxDecoration(
color: AppColor.neutral100,
color: AppColor.background(context),
borderRadius: BorderRadius.circular(10),
border: Border.all(color: AppColor.border2Color(context)),
),
);
return Scaffold(
backgroundColor: AppColor.neutral100,
appBar: DefaultAppBar(title: context.translation.askOtpFromRequester),
body: SingleChildScrollView(
child: Column(
@ -34,16 +36,16 @@ class VerifyOtpView extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
context.translation.verify.heading6(context).custom(color: AppColor.black10),
7.height,
context.translation.otpSentToNumber.bodyText2(context).custom(color: AppColor.neutral120),
InfoHeader16Widget(context.translation.verify),
6.height,
InfoTextWidget(label: context.translation.otpSentToNumber, isMsg: true, showEmptyValue: true),
Center(
child: Pinput(
length: 4,
defaultPinTheme: defaultPinTheme,
focusedPinTheme: defaultPinTheme.copyWith(
decoration: defaultPinTheme.decoration?.copyWith(
border: Border.all(color: AppColor.neutral100),
border: Border.all(color: AppColor.primary10),
),
),
onCompleted: (pin) async {
@ -67,24 +69,16 @@ class VerifyOtpView extends StatelessWidget {
).paddingOnly(top: 24, bottom: 24),
Row(
children: [
context.translation.resendIn.bodyText2(context).custom(color: AppColor.neutral120),
7.width,
InfoTextWidget(label: context.translation.resendIn, isMsg: true, showEmptyValue: true),
6.width,
ValueListenableBuilder<String>(
//add actual timer value...
valueListenable: ValueNotifier("0:00"),
builder: (context, value, _) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
value.bodyText2(context).custom(
color: context.isDark ? AppColor.neutral10 : AppColor.neutral120,
),
],
);
return InfoTextWidget(label: value, isMsg: true, showEmptyValue: true);
},
),
7.width,
6.width,
InkWell(
onTap: () {},
child: Text(
@ -105,9 +99,9 @@ class VerifyOtpView extends StatelessWidget {
24.height,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 4,
children: [
context.translation.havingTroubleReceivingOtp.heading6(context).custom(color: AppColor.black10),
3.height,
InfoHeader16Widget(context.translation.havingTroubleReceivingOtp),
InkWell(
onTap: () {
Navigator.pop(context);

Loading…
Cancel
Save