improvements

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

@ -192,7 +192,7 @@ class FooterActionButton {
child: AppFilledButton( child: AppFilledButton(
label: context.translation.iHaveArrived, label: context.translation.iHaveArrived,
showIcon: true, showIcon: true,
icon: 'arrived_icon'.toSvgAsset(), icon: 'arrived_icon'.toSvgAsset(color: AppColor.background(context)),
buttonColor: AppColor.green70, buttonColor: AppColor.green70,
onPressed: () async { onPressed: () async {
Navigator.push(context, MaterialPageRoute(builder: (context) => const VerifyArrivalView())); 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() ?? []; _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 && userProvider.user?.type == UsersTypes.engineer &&
requestProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived; requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.eArrived;
bool showAssetDetailCard = (userProvider.user?.type == UsersTypes.engineer && requestProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.activity) || bool showAssetDetailCard = (userProvider.user?.type == UsersTypes.engineer && requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.activity) ||
requestProvider.isReadOnlyRequest; requestProvider.isReadOnlyRequest;
bool showCostCard = context.userProvider.user!.type == UsersTypes.engineer && bool showCostCard = context.userProvider.user!.type == UsersTypes.engineer &&
!requestProvider.isReadOnlyRequest && !requestProvider.isReadOnlyRequest &&
requestProvider.currentWorkOrder!.data!.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.activity; requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.activity;
return requestProvider.isLoading return requestProvider.isLoading
? CircularProgressIndicator(color: AppColor.loadingColor(context)).center ? 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/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/app_lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.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/loaders/no_data_found.dart';
import 'package:test_sa/views/widgets/qr/scan_qr.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 ? CircularProgressIndicator(color: AppColor.loadingColor(context)).center
: requestDetailProvider.arrivalTypeList.isEmpty : requestDetailProvider.arrivalTypeList.isEmpty
? const NoDataFound().center ? const NoDataFound().center
: ListView.builder( : ListView.separated(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
itemCount: requestDetailProvider.arrivalTypeList.length, itemCount: requestDetailProvider.arrivalTypeList.length,
separatorBuilder: (cxt, index) => 12.height,
itemBuilder: (builderContext, index) { itemBuilder: (builderContext, index) {
final item = requestDetailProvider.arrivalTypeList[index]; final item = requestDetailProvider.arrivalTypeList[index];
return customListItem( return customListItem(
@ -76,39 +79,23 @@ class _VerifyArrivalViewState extends State<VerifyArrivalView> {
Widget customListItem({required String icon, required String heading, required String subHeading, required VoidCallback onTap, bool isLoading = false}) { Widget customListItem({required String icon, required String heading, required String subHeading, required VoidCallback onTap, bool isLoading = false}) {
return GestureDetector( return GestureDetector(
onTap: onTap, // Handles the tap onTap: onTap, // Handles the tap
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(14), // Circular border radius
),
color: AppColor.background(context),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, // Align items at the top crossAxisAlignment: CrossAxisAlignment.center,
spacing: 12,
children: [ children: [
icon.toSvgAsset(width: 30, color: AppColor.neutral120, height: 30).paddingOnly(top: 0), icon.toSvgAsset(width: 26, color: AppColor.icon2Color(context), height: 26).paddingOnly(top: 0),
12.width, Column(
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( InfoHeader16Widget(heading),
heading,
style: AppTextStyles.heading6.copyWith(color: AppColor.textColor(context)),
),
6.height, 6.height,
Text( InfoTextWidget(label: subHeading, showEmptyValue: true, isMsg: true),
subHeading,
style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120),
),
], ],
), ).expanded,
),
12.width,
SizedBox(width: 24, height: 24, child: isLoading ? CircularProgressIndicator(color: AppColor.loadingColor(context), strokeWidth: 2) : const SizedBox()) 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 { 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/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/app_lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.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 { class VerifyOtpView extends StatelessWidget {
const VerifyOtpView({Key? key}) : super(key: key); const VerifyOtpView({Key? key}) : super(key: key);
@ -18,14 +20,14 @@ class VerifyOtpView extends StatelessWidget {
final defaultPinTheme = PinTheme( final defaultPinTheme = PinTheme(
width: 51.toScreenWidth, width: 51.toScreenWidth,
height: 63.toScreenHeight, height: 63.toScreenHeight,
textStyle: const TextStyle(fontSize: 22, color: Colors.black), textStyle: TextStyle(fontSize: 24, color: AppColor.headingTextColor(context)),
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColor.neutral100, color: AppColor.background(context),
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
border: Border.all(color: AppColor.border2Color(context)),
), ),
); );
return Scaffold( return Scaffold(
backgroundColor: AppColor.neutral100,
appBar: DefaultAppBar(title: context.translation.askOtpFromRequester), appBar: DefaultAppBar(title: context.translation.askOtpFromRequester),
body: SingleChildScrollView( body: SingleChildScrollView(
child: Column( child: Column(
@ -34,16 +36,16 @@ class VerifyOtpView extends StatelessWidget {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
context.translation.verify.heading6(context).custom(color: AppColor.black10), InfoHeader16Widget(context.translation.verify),
7.height, 6.height,
context.translation.otpSentToNumber.bodyText2(context).custom(color: AppColor.neutral120), InfoTextWidget(label: context.translation.otpSentToNumber, isMsg: true, showEmptyValue: true),
Center( Center(
child: Pinput( child: Pinput(
length: 4, length: 4,
defaultPinTheme: defaultPinTheme, defaultPinTheme: defaultPinTheme,
focusedPinTheme: defaultPinTheme.copyWith( focusedPinTheme: defaultPinTheme.copyWith(
decoration: defaultPinTheme.decoration?.copyWith( decoration: defaultPinTheme.decoration?.copyWith(
border: Border.all(color: AppColor.neutral100), border: Border.all(color: AppColor.primary10),
), ),
), ),
onCompleted: (pin) async { onCompleted: (pin) async {
@ -67,24 +69,16 @@ class VerifyOtpView extends StatelessWidget {
).paddingOnly(top: 24, bottom: 24), ).paddingOnly(top: 24, bottom: 24),
Row( Row(
children: [ children: [
context.translation.resendIn.bodyText2(context).custom(color: AppColor.neutral120), InfoTextWidget(label: context.translation.resendIn, isMsg: true, showEmptyValue: true),
7.width, 6.width,
ValueListenableBuilder<String>( ValueListenableBuilder<String>(
//add actual timer value... //add actual timer value...
valueListenable: ValueNotifier("0:00"), valueListenable: ValueNotifier("0:00"),
builder: (context, value, _) { builder: (context, value, _) {
return Column( return InfoTextWidget(label: value, isMsg: true, showEmptyValue: true);
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
value.bodyText2(context).custom(
color: context.isDark ? AppColor.neutral10 : AppColor.neutral120,
),
],
);
}, },
), ),
7.width, 6.width,
InkWell( InkWell(
onTap: () {}, onTap: () {},
child: Text( child: Text(
@ -105,9 +99,9 @@ class VerifyOtpView extends StatelessWidget {
24.height, 24.height,
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
spacing: 4,
children: [ children: [
context.translation.havingTroubleReceivingOtp.heading6(context).custom(color: AppColor.black10), InfoHeader16Widget(context.translation.havingTroubleReceivingOtp),
3.height,
InkWell( InkWell(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);

Loading…
Cancel
Save