import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/svg.dart'; import 'package:go_router/go_router.dart'; import 'package:grocery_app/src/common_widget/network_image.dart'; import 'package:grocery_app/src/core/routes/routes.dart'; import 'package:grocery_app/src/logic/provider/home_provider.dart'; import 'package:grocery_app/src/logic/provider/order_provider.dart'; import 'package:grocery_app/src/ui/data_notfound.dart'; import 'package:grocery_app/utils/constants/assets_constant.dart'; import 'package:grocery_app/utils/constants/color_constant.dart'; import 'package:grocery_app/utils/extensions/extensions.dart'; import 'package:grocery_app/utils/extensions/uicontext.dart'; import 'package:intl/intl.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class MyOrderScreen extends StatefulWidget { @override State createState() => _MyOrderScreenState(); } class _MyOrderScreenState extends State { @override void initState() { Provider.of(context, listen: false).getMyOrder(context); super.initState(); } String convertUtcToIst(String utcTime) { DateTime utcDateTime = DateTime.parse(utcTime).toUtc(); DateTime istDateTime = utcDateTime.add(const Duration(hours: 5, minutes: 30)); String formattedDateTime = DateFormat("dd-MM-yyyy hh:mm a").format(istDateTime); return formattedDateTime; } Future _refresh() async { await Future.delayed(Duration(seconds: 1)); setState(() { Provider.of(context, listen: false).getMyOrder(context); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.white, centerTitle: true, leading: Center( child: SizedBox( height: 20, width: 20, child: InkWell( onTap: () { context.clearAndPush(routePath: MyRoutes.HOME); }, child: SvgPicture.asset( APPASSETS.back, height: 20, width: 20, )), ), ), title: const Text( "My Order", style: TextStyle( fontSize: 20, fontWeight: FontWeight.w700, ), ), ), body: RefreshIndicator( onRefresh: _refresh, child: Consumer(builder: (context, orderProvider, child) { if (orderProvider.isloading) { return const Center(child: CircularProgressIndicator()); } if (orderProvider.orderList.isEmpty) { return Center( child: Column( children: [ SizedBox( height: 150.h, ), DataNotFound( imagePath: 'assets/images/wishlist.jpg', message: "Your Order is empty", ), InkWell( onTap: () { context.push(MyRoutes.FRUITVEGGIEDETAIL); }, child: Container( margin: const EdgeInsets.only(top: 30, bottom: 10), height: 40, width: MediaQuery.sizeOf(context).width / 2.8, decoration: BoxDecoration( color: APPCOLOR.lightGreen, borderRadius: BorderRadius.circular(10)), child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon( Icons.search, color: Colors.white, ), const SizedBox( width: 10, ), Text( "Shoping", style: context.customMedium(Colors.white, 16), ), ], ), ), ), ], )); } return Column( children: [ Expanded( child: ListView.builder( itemCount: orderProvider.orderList.length, itemBuilder: (context, index) { final order = orderProvider.orderList[index]; return InkWell( onTap: () { context.pushNamed(MyRoutes.ORDERDETAILS, extra: order); //context.push(MyRoutes.ORDERDETAILS); }, child: Card( margin: EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Center( child: Container( width: 50, height: 50, decoration: BoxDecoration( color: APPCOLOR.bgGrey, borderRadius: BorderRadius.circular(15), ), child: Stack( alignment: Alignment.center, children: [ AppNetworkImage( imageUrl: order.orderItems!.first .productImage, backGroundColor: Colors.transparent, ), ], ), ), ), SizedBox(width: 5), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(order.orderNumber, style: TextStyle( fontWeight: FontWeight.bold)), Text( order.totalItems.toString() + " items", style: TextStyle(color: Colors.grey)), ], ), Spacer(), ], ), SizedBox(height: 10), Text( convertUtcToIst(order.updatedAt.toString()), style: TextStyle(color: Colors.grey)), SizedBox(height: 5), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text("\$" + order.finalTotal, style: TextStyle( fontWeight: FontWeight.bold)), Row( children: [ SizedBox(width: 10), ElevatedButton( onPressed: () { print("lkdhgkjdfgj"); _makePhoneCall(order .stores!.first.vendor!.phone); }, style: ElevatedButton.styleFrom( backgroundColor: Colors.green, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10), ), ), child: Row( children: [ Icon(Icons.call, color: Colors.white), SizedBox(width: 5), Text('Call', style: TextStyle( color: Colors.white)), ], ), ), ], ), ], ), ], ), ), ), ); }, ), ), ], ); }), )); } Future _makePhoneCall(String number) async { try { final Uri phoneUri = Uri(scheme: 'tel', path: number); if (await canLaunchUrl(phoneUri)) { await launchUrl(phoneUri); } else { throw 'Could not launch $phoneUri'; } } catch (e) { print("Error launching phone call: $e"); } } }