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.
100 lines
3.9 KiB
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
|
|
}
|
|
}
|