import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/app_strings/app_asset.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/new_models/arrival_verification_type_model.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/views/components/verify_otp_view.dart'; import 'package:test_sa/service_request_latest/views/forms/asset_retired/asset_retired.dart'; import 'package:test_sa/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart'; import 'package:test_sa/views/widgets/qr/scan_qr.dart'; import 'activities_list_view.dart'; class VerifyArrivalView extends StatefulWidget { const VerifyArrivalView({Key? key}) : super(key: key); @override State createState() => _VerifyArrivalViewState(); } class _VerifyArrivalViewState extends State { ArrivalVerificationTypeModel ? arrivalVerificationTypeModel; @override void initState() { //TODO call this when all data is confirmed // getInitialData(); super.initState(); } Future getInitialData() async{ RequestDetailProvider requestDetailProvider = Provider.of(context,listen: false); arrivalVerificationTypeModel = await requestDetailProvider.getArrivalVerificationType(); } Widget build(BuildContext context) { //TODO replace the list with Api... final List> items = [ {'heading': context.translation.scanQr, 'subHeading': context.translation.scanQrDetail, 'icon': AppAsset.scanQrIcon}, {'heading': context.translation.askRequester, 'subHeading': context.translation.askRequesterDetail, 'icon': AppAsset.askRequesterIcon}, {'heading': context.translation.askOtp, 'subHeading': context.translation.askOtpDetail, 'icon': AppAsset.askOtpIcon}, {'heading': context.translation.takeDevicePhoto, 'subHeading': context.translation.takeDevicePhotoDetail, 'icon': AppAsset.takeDevicePhotoIcon}, ]; return Scaffold( appBar: DefaultAppBar(title: context.translation.verifyArrival), //backgroundColor: const Color(0xfff8f9fb), body: Consumer(builder: (context, RequestDetailProvider requestDetailProvider, child) { return SafeArea( child: ListView.builder( padding: EdgeInsets.zero, itemCount: items.length, itemBuilder: (context, index) { final item = items[index]; return customListItem( icon: item['icon']!, heading: item['heading']!, subHeading: item['subHeading']!, context: context, onTap: () { onItemTap(requestDetailProvider: requestDetailProvider, index: index, context: context); }); }, ).paddingOnly(start: 16, end: 16, top: 12, bottom: 12), ); }), ); } Widget customListItem({ required BuildContext context, required String icon, required String heading, required String subHeading, required VoidCallback onTap, }) { return GestureDetector( onTap: onTap, // Handles the tap child: Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(14), // Circular border radius ), color: Colors.white, child: Row( crossAxisAlignment: CrossAxisAlignment.start, // Align items at the top children: [ // Icon Section icon .toSvgAsset( width: 32, color: AppColor.neutral120, height: 29, ) .paddingOnly(top: 8), 14.width, Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( heading, style: AppTextStyles.heading6.copyWith(color: AppColor.neutral50), ), 7.height, Text( subHeading, style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120), ), ], ).paddingOnly(end: 50), ), ], ).paddingAll(12), ), ); } void onItemTap({required int index, required RequestDetailProvider requestDetailProvider, required BuildContext context}) { switch (index) { case 0: // Navigator.push( // context, // MaterialPageRoute(builder: (context) => const ActivitiesListView()), // ); break; case 1: // Navigator.push( // context, // MaterialPageRoute(builder: (context) => const AssetRetired()), // ); break; case 2: //TODO api has error need to fixed by ahmed... // requestDetailProvider.sendOtp(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!); Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => const VerifyOtpView()), ); break; case 3: // Navigator.push( // context, // MaterialPageRoute(builder: (context) => const VerifyAssetDetails()), // ); //push to specific screen... // Navigator.push( // context, // MaterialPageRoute(builder: (context) => const ScanQrView()), // ); break; } // ScanQr } }