You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/service_request_latest/views/components/verify_arrival_view.dart

100 lines
3.9 KiB
Dart

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/models/service_request/service_request.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/service_request_latest/views/components/scan_qr_view.dart';
import 'activities_list_view.dart';
class VerifyArrivalView extends StatelessWidget {
const VerifyArrivalView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final List<Map<String, String>> 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<ServiceRequestsProvider>(builder: (context, serviceRequestsProvider, child) {
return SafeArea(
child: ListView.builder(
padding: EdgeInsets.symmetric(vertical: 12.toScreenHeight),
// padding: EdgeInsets.zero,
itemCount: items.length,
itemBuilder: (context, index) {
final item = items[index];
return listItem(
icon: item['icon']!,
heading: item['heading']!,
subHeading: item['subHeading']!,
//context: context,
onTap: () {
onItemTap(serviceRequest: serviceRequestsProvider.currentSelectedRequest!, index: index, context: context);
});
},
),
);
}),
);
}
Widget listItem({required String icon, required String heading, required String subHeading, required VoidCallback onTap}) {
return Padding(
padding: EdgeInsets.only(left: 16.toScreenWidth, right: 16.toScreenWidth, bottom: 12.toScreenHeight),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(14), // Circular border radius
),
color: Colors.white,
child: ListTile(
minVerticalPadding: 12,
horizontalTitleGap: 10,
onTap: onTap,
// contentPadding: const EdgeInsets.all(12),
leading: SvgPicture.asset(icon),
title: Text(heading, style: AppTextStyles.heading5),
subtitle: Text(subHeading, style: AppTextStyles.bodyText),
),
),
);
}
void onItemTap({required int index, required ServiceRequest serviceRequest, required BuildContext context}) {
print('on item tap i got index is $index');
switch (index) {
case 0:
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const ScanQrView()),
);
break;
case 1:
//push to specific screen...
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const ActivitiesListView()),
);
break;
case 2:
//push to specific screen...
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => const ScanQrView()),
// );
break;
}
// ScanQr
}
}