You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							575 lines
						
					
					
						
							29 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							575 lines
						
					
					
						
							29 KiB
						
					
					
				| import 'package:flutter/material.dart'; | |
| import 'package:teso/Classes/API Clasess/ProximityCoupon.dart'; | |
| import 'package:provider/provider.dart'; | |
| import 'package:teso/Classes/CouponRateCalculator.dart'; | |
| import 'package:teso/providers/user_provider.dart'; | |
| import 'package:teso/Classes/API Clasess/CouponHead.dart'; | |
| import 'package:page_transition/page_transition.dart'; | |
| import 'package:teso/Pages/productView.dart'; | |
| import 'package:teso/Classes/API Clasess/CouponDetails.dart'; | |
| import 'package:teso/Classes/API Clasess/Product.dart'; | |
| import 'package:teso/util/SizeConfig.dart'; | |
| import 'package:teso/util/consts.dart'; | |
| 
 | |
| Positioned buildActiveDiscountCoupon( | |
|     ProximityCoupon img, | |
|     double bottom, | |
|     double right, | |
|     double left, | |
|     double cardWidth, | |
|     double rotation, | |
|     double skew, | |
|     BuildContext context, | |
|     int flag, | |
|     Function swipeRight, | |
|     Function swipeLeft, | |
|     double worth, | |
|     Function calWorth) { | |
|   SizeConfig().init(context); | |
|   if (worth < img.lowerLimit) { | |
|     worth = img.lowerLimit; | |
|   } | |
|   return new Positioned( | |
|     bottom: bottom, | |
|     right: flag == 0 | |
|         ? right != 0.0 | |
|             ? right | |
|             : null | |
|         : null, | |
|     left: flag == 1 | |
|         ? right != 0.0 | |
|             ? right | |
|             : null | |
|         : null, | |
|     child: new Transform( | |
|       alignment: flag == 0 ? Alignment.bottomRight : Alignment.bottomLeft, | |
|       transform: new Matrix4.skewX(skew), | |
|       child: new RotationTransition( | |
|         turns: new AlwaysStoppedAnimation( | |
|             flag == 0 ? rotation / 360 : -rotation / 360), | |
|         child: Column( | |
|           children: [ | |
|             new Row( | |
|               children: [ | |
|                 InkWell( | |
|                   onTap: () async { | |
|                     CouponsHead head = new CouponsHead(); | |
|                     head.businessId = img.business.businessId; | |
|                     head.couponId = img.couponId; | |
|                     head.expiration = img.expiration; | |
|                     head.lower = img.lowerLimit; | |
|                     head.upper = img.upperLimit; | |
|                     head.quantity = img.quantity; | |
|                     head.state = img.state; | |
|                     head.targetProduct = img.targetID; | |
|                     head.type = img.type; | |
| 
 | |
|                     CouponDetails details = new CouponDetails(); | |
|                     details.businessId = img.business.businessId; | |
|                     details.countID = "null"; | |
|                     details.couponId = img.couponId; | |
|                     details.expiration = img.expiration; | |
|                     details.issuer = img.business; | |
|                     details.lowerLimit = img.lowerLimit; | |
|                     details.upperLimit = img.upperLimit; | |
|                     details.quantity = img.quantity; | |
|                     details.state = img.state; | |
|                     details.type = img.type; | |
|                     details.targetProduct = new Product(); | |
|                     details.targetProduct.businessID = details.businessId; | |
|                     details.targetProduct.productImage = img.targetImage; | |
|                     details.targetProduct.productName = img.targetName; | |
|                     details.targetProduct.unitPrice = img.targetCost; | |
|                     details.targetProduct.productDesc = img.tagretDescription; | |
| 
 | |
|                     Provider.of<UserProvider>(context, listen: false) | |
|                         .viewCoupon(head); | |
|                     Navigator.push( | |
|                       context, | |
|                       PageTransition( | |
|                         type: PageTransitionType.rightToLeft, | |
|                         child: ProductView( | |
|                           couponDetails: details, | |
|                         ), | |
|                       ), | |
|                     ); | |
|                   }, | |
|                   child: Container( | |
|                     width: (MediaQuery.of(context).size.width * 0.75), | |
|                     height: MediaQuery.of(context).size.height * 0.65, | |
|                     margin: EdgeInsets.only( | |
|                       left: MediaQuery.of(context).size.width * 0.12, | |
|                     ), | |
|                     decoration: BoxDecoration( | |
|                       borderRadius: BorderRadius.only( | |
|                         bottomLeft: Radius.circular(20), | |
|                         bottomRight: Radius.circular(20), | |
|                         topLeft: Radius.circular(20), | |
|                         topRight: Radius.circular(20), | |
|                       ), | |
|                       color: Colors.white, | |
|                     ), | |
|                     child: ClipRRect( | |
|                       borderRadius: BorderRadius.only( | |
|                         bottomLeft: Radius.circular(20), | |
|                         bottomRight: Radius.circular(20), | |
|                         topLeft: Radius.circular(20), | |
|                         topRight: Radius.circular(20), | |
|                       ), | |
|                       child: Material( | |
|                         elevation: 5.0, | |
|                         child: Container( | |
|                           width: (MediaQuery.of(context).size.width * 0.75), | |
|                           height: MediaQuery.of(context).size.height * 0.68, | |
|                           color: Colors.white, | |
|                           child: Column( | |
|                             children: [ | |
|                               Container( | |
|                                 width: | |
|                                     (MediaQuery.of(context).size.width * 0.75), | |
|                                 height: | |
|                                     MediaQuery.of(context).size.height * 0.50, | |
|                                 padding: EdgeInsets.all(8.0), | |
|                                 decoration: BoxDecoration( | |
|                                   color: Colors.white, | |
|                                   image: img.upperLimit < 50.1 | |
|                                       ? DecorationImage( | |
|                                           fit: BoxFit.fill, | |
|                                           image: AssetImage( | |
|                                               "assets/images/blue.png"), | |
|                                           colorFilter: new ColorFilter.mode( | |
|                                               Color(0xFF0031ed) | |
|                                                   .withOpacity(1.0), | |
|                                               BlendMode.multiply), | |
|                                         ) | |
|                                       : DecorationImage( | |
|                                           fit: BoxFit.fill, | |
|                                           image: AssetImage( | |
|                                               "assets/images/redBack.png"), | |
|                                           colorFilter: new ColorFilter.mode( | |
|                                               Colors.red.withOpacity(1.0), | |
|                                               BlendMode.multiply), | |
|                                         ), | |
|                                   borderRadius: BorderRadius.only( | |
|                                     bottomLeft: Radius.circular(80), | |
|                                     bottomRight: Radius.circular(80), | |
|                                   ), | |
|                                 ), | |
|                                 child: Stack( | |
|                                   children: [ | |
|                                     Align( | |
|                                       alignment: Alignment.topLeft, | |
|                                       child: Row( | |
|                                         children: [ | |
|                                           Image( | |
|                                               width: 30, | |
|                                               image: AssetImage( | |
|                                                   "assets/images/tesoCouponInsignia.png")), | |
|                                           SizedBox( | |
|                                             width: 5, | |
|                                           ), | |
|                                           Text( | |
|                                             "TESO", | |
|                                             style: TextStyle( | |
|                                                 color: Colors.white, | |
|                                                 fontSize: 15), | |
|                                           ), | |
|                                         ], | |
|                                       ), | |
|                                     ), | |
|                                     Align( | |
|                                       alignment: Alignment.topCenter, | |
|                                       child: Container( | |
|                                         margin: EdgeInsets.only( | |
|                                           top: MediaQuery.of(context) | |
|                                                   .size | |
|                                                   .width * | |
|                                               0.125, | |
|                                         ), | |
|                                         child: Column( | |
|                                           children: [ | |
|                                             Text( | |
|                                               img.business.businessName, | |
|                                               style: TextStyle( | |
|                                                 color: Colors.white, | |
|                                                 fontSize: 18, | |
|                                                 fontWeight: FontWeight.w700, | |
|                                               ), | |
|                                             ), | |
|                                             Container( | |
|                                               width: double.infinity, | |
|                                               margin: EdgeInsets.symmetric( | |
|                                                 vertical: 10, | |
|                                               ), | |
|                                               child: Center( | |
|                                                 child: Text( | |
|                                                   "VOUCHER", | |
|                                                   textAlign: TextAlign.center, | |
|                                                   style: TextStyle( | |
|                                                     color: Colors.white, | |
|                                                     fontSize: 25, | |
|                                                     fontWeight: FontWeight.w900, | |
|                                                   ), | |
|                                                 ), | |
|                                               ), | |
|                                             ), | |
|                                           ], | |
|                                         ), | |
|                                       ), | |
|                                     ), | |
|                                     Align( | |
|                                       alignment: Alignment.center, | |
|                                       child: Container( | |
|                                         height: | |
|                                             SizeConfig.safeBlockHorizontal * 16, | |
|                                         padding: EdgeInsets.all(4.5), | |
|                                         decoration: BoxDecoration( | |
|                                             border: Border.all( | |
|                                                 color: Colors.white)), | |
|                                         child: Column( | |
|                                           children: [ | |
|                                             Text( | |
|                                               "ORIGINAL PRICE : GH¢ " + | |
|                                                   img.targetCost | |
|                                                       .toStringAsFixed(2), | |
|                                               style: TextStyle( | |
|                                                 color: Colors.white, | |
|                                                 fontWeight: FontWeight.bold, | |
|                                                 fontSize: SizeConfig | |
|                                                         .safeBlockHorizontal * | |
|                                                     3, | |
|                                               ), | |
|                                             ), | |
|                                             Text( | |
|                                               "DISCOUNTED PRICE : GH¢ " + | |
|                                                   (img.targetCost - | |
|                                                           (img.targetCost * | |
|                                                               (worth / 100))) | |
|                                                       .toStringAsFixed(2), | |
|                                               style: TextStyle( | |
|                                                 color: Colors.white, | |
|                                                 fontWeight: FontWeight.bold, | |
|                                                 fontSize: SizeConfig | |
|                                                         .safeBlockHorizontal * | |
|                                                     3, | |
|                                               ), | |
|                                             ), | |
|                                             new Wrap( | |
|                                               direction: Axis.horizontal, | |
|                                               children: [ | |
|                                                 Image( | |
|                                                   width: SizeConfig | |
|                                                           .safeBlockHorizontal * | |
|                                                       5, | |
|                                                   image: AssetImage( | |
|                                                       "assets/images/silver1.png"), | |
|                                                 ), | |
|                                                 Container( | |
|                                                   margin: EdgeInsets.only( | |
|                                                     top: 5, | |
|                                                   ), | |
|                                                   child: Text( | |
|                                                     "SILVER COIN COST : ", | |
|                                                     style: TextStyle( | |
|                                                       color: Colors.white, | |
|                                                       fontWeight: | |
|                                                           FontWeight.bold, | |
|                                                       fontSize: SizeConfig | |
|                                                               .safeBlockHorizontal * | |
|                                                           3, | |
|                                                     ), | |
|                                                   ), | |
|                                                 ), | |
|                                                 Container( | |
|                                                   margin: EdgeInsets.only( | |
|                                                     top: 5, | |
|                                                   ), | |
|                                                   child: Text( | |
|                                                     CouponRateCalculator | |
|                                                             .getRate( | |
|                                                                 img.targetCost * | |
|                                                                     (worth / | |
|                                                                         100)) | |
|                                                         .toString(), | |
|                                                     style: TextStyle( | |
|                                                       color: Colors.white, | |
|                                                       fontWeight: | |
|                                                           FontWeight.bold, | |
|                                                       fontSize: SizeConfig | |
|                                                               .safeBlockHorizontal * | |
|                                                           3, | |
|                                                     ), | |
|                                                   ), | |
|                                                 ), | |
|                                               ], | |
|                                             ), | |
|                                           ], | |
|                                         ), | |
|                                       ), | |
|                                     ), | |
|                                     Align( | |
|                                       alignment: Alignment.bottomCenter, | |
|                                       child: Container( | |
|                                         margin: EdgeInsets.symmetric( | |
|                                             vertical: MediaQuery.of(context) | |
|                                                     .size | |
|                                                     .width * | |
|                                                 0.15), | |
|                                         child: Text( | |
|                                           img.targetName.toUpperCase(), | |
|                                           textAlign: TextAlign.center, | |
|                                           style: TextStyle( | |
|                                             color: Colors.white, | |
|                                             fontSize: 20, | |
|                                             fontWeight: FontWeight.bold, | |
|                                           ), | |
|                                         ), | |
|                                       ), | |
|                                     ), | |
|                                   ], | |
|                                 ), | |
|                               ), | |
|                               Container( | |
|                                 padding: EdgeInsets.symmetric( | |
|                                   horizontal: | |
|                                       MediaQuery.of(context).size.width * 0.010, | |
|                                 ), | |
|                                 child: Row( | |
|                                   mainAxisAlignment: | |
|                                       MainAxisAlignment.spaceBetween, | |
|                                   children: [ | |
|                                     Container( | |
|                                       width: MediaQuery.of(context).size.width * | |
|                                           0.4, | |
|                                       height: 70, | |
|                                       padding: EdgeInsets.only( | |
|                                         top: 5, | |
|                                       ), | |
|                                       child: SingleChildScrollView( | |
|                                         scrollDirection: Axis.vertical, | |
|                                         child: Column( | |
|                                           children: [ | |
|                                             Container( | |
|                                               child: Text( | |
|                                                 "Pay : GH¢ " + | |
|                                                     (img.targetCost - | |
|                                                             (img.targetCost * | |
|                                                                 (worth / 100))) | |
|                                                         .toStringAsFixed(2) + | |
|                                                     " only", | |
|                                                 style: TextStyle( | |
|                                                   color: Colors.red, | |
|                                                   fontWeight: FontWeight.bold, | |
|                                                 ), | |
|                                               ), | |
|                                             ), | |
|                                             img.condition == 'none' | |
|                                                 ? Container() | |
|                                                 : Container( | |
|                                                     child: Text( | |
|                                                       "Condition : " + | |
|                                                           img.condition | |
|                                                               .replaceAll( | |
|                                                                   '"', ""), | |
|                                                     ), | |
|                                                   ), | |
|                                           ], | |
|                                         ), | |
|                                       ), | |
|                                     ), | |
|                                     Container( | |
|                                       width: | |
|                                           SizeConfig.safeBlockHorizontal * 22, | |
|                                       height: | |
|                                           SizeConfig.safeBlockHorizontal * 22, | |
|                                       padding: EdgeInsets.all(2.5), | |
|                                       decoration: BoxDecoration( | |
|                                         border: Border.all( | |
|                                           color: Colors.red, | |
|                                         ), | |
|                                         borderRadius: BorderRadius.only( | |
|                                           topLeft: Radius.circular(80), | |
|                                           topRight: Radius.circular(80), | |
|                                           bottomLeft: Radius.circular(80), | |
|                                           bottomRight: Radius.circular(80), | |
|                                         ), | |
|                                       ), | |
|                                       child: Container( | |
|                                         width: | |
|                                             SizeConfig.safeBlockHorizontal * 22, | |
|                                         height: | |
|                                             SizeConfig.safeBlockHorizontal * 22, | |
|                                         padding: EdgeInsets.all(2), | |
|                                         decoration: BoxDecoration( | |
|                                           shape: BoxShape.circle, | |
|                                           color: Colors.red, | |
|                                           border: Border.all(color: Colors.red), | |
|                                           image: DecorationImage( | |
|                                             fit: BoxFit.fill, | |
|                                             image: AssetImage( | |
|                                                 "assets/images/red.png"), | |
|                                             colorFilter: new ColorFilter.mode( | |
|                                                 Colors.red.withOpacity(0.5), | |
|                                                 BlendMode.overlay), | |
|                                           ), | |
|                                         ), | |
|                                         child: Center( | |
|                                           child: Column( | |
|                                             mainAxisAlignment: | |
|                                                 MainAxisAlignment.center, | |
|                                             mainAxisSize: MainAxisSize.min, | |
|                                             children: [ | |
|                                               Text( | |
|                                                 worth.toStringAsFixed(1) + "%", | |
|                                                 style: TextStyle( | |
|                                                   color: Colors.white, | |
|                                                   fontSize: SizeConfig | |
|                                                           .safeBlockHorizontal * | |
|                                                       6, | |
|                                                   fontWeight: FontWeight.w900, | |
|                                                 ), | |
|                                               ), | |
|                                               Container( | |
|                                                 margin: EdgeInsets.only( | |
|                                                   left: 22, | |
|                                                 ), | |
|                                                 child: Text( | |
|                                                   "OFF", | |
|                                                   textAlign: TextAlign.end, | |
|                                                   style: TextStyle( | |
|                                                     color: Colors.white, | |
|                                                     fontSize: SizeConfig | |
|                                                             .safeBlockHorizontal * | |
|                                                         4, | |
|                                                   ), | |
|                                                 ), | |
|                                               ), | |
|                                             ], | |
|                                           ), | |
|                                         ), | |
|                                       ), | |
|                                     ), | |
|                                   ], | |
|                                 ), | |
|                               ), | |
|                             ], | |
|                           ), | |
|                         ), | |
|                       ), | |
|                     ), | |
|                   ), | |
|                 ), | |
|                 Container( | |
|                   // width: SizeConfig.safeBlockHorizontal * 30, | |
|                   height: SizeConfig.safeBlockVertical * 60, | |
|                   // padding: EdgeInsets.all(SizeConfig.safeBlockVertical * 2), | |
|                   child: new Column( | |
|                     children: [ | |
|                       Container( | |
|                         child: Text( | |
|                           img.upperLimit.toStringAsFixed(1) + " %", | |
|                           textAlign: TextAlign.center, | |
|                           style: TextStyle( | |
|                             foreground: Paint() | |
|                               ..style = PaintingStyle.stroke | |
|                               ..strokeWidth = 1 | |
|                               ..color = Colors.blue, | |
|                           ), | |
|                         ), | |
|                       ), | |
|                       Container( | |
|                         height: SizeConfig.safeBlockVertical * 50, | |
|                         child: new RotatedBox( | |
|                           quarterTurns: 3, | |
|                           child: Slider( | |
|                             value: worth, | |
|                             min: img.lowerLimit, | |
|                             max: img.upperLimit, | |
|                             divisions: 20, | |
|                             activeColor: accentMain, | |
|                             inactiveColor: darkAccent, | |
|                             label: worth.toStringAsFixed(1) + "%", | |
|                             onChanged: (double newValue) => calWorth(newValue), | |
|                           ), | |
|                         ), | |
|                       ), | |
|                       Container( | |
|                         child: Text( | |
|                           img.lowerLimit.toString() + " %", | |
|                           textAlign: TextAlign.center, | |
|                           style: TextStyle( | |
|                             foreground: Paint() | |
|                               ..style = PaintingStyle.stroke | |
|                               ..strokeWidth = 1 | |
|                               ..color = Colors.blue, | |
|                           ), | |
|                         ), | |
|                       ), | |
|                     ], | |
|                   ), | |
|                 ) | |
|               ], | |
|             ), | |
|             SizedBox( | |
|               height: 20, | |
|             ), | |
|             new Wrap( | |
|               alignment: WrapAlignment.center, | |
|               runSpacing: 10, | |
|               spacing: 10, | |
|               crossAxisAlignment: WrapCrossAlignment.center, | |
|               children: <Widget>[ | |
|                 new ElevatedButton( | |
|                   style: ElevatedButton.styleFrom( | |
|                     shape: RoundedRectangleBorder( | |
|                       borderRadius: BorderRadius.circular(18.0), | |
|                     ), | |
|                     primary: Colors.red[200], | |
|                     padding: new EdgeInsets.all(10.0), | |
|                   ), | |
|                   onPressed: () => swipeLeft(img), | |
|                   child: new Container( | |
|                     height: 30.0, | |
|                     width: 100.0, | |
|                     alignment: Alignment.center, | |
|                     decoration: new BoxDecoration( | |
|                       color: Colors.red[200], | |
|                       borderRadius: new BorderRadius.circular(60.0), | |
|                     ), | |
|                     child: new Text( | |
|                       "Not Interested", | |
|                       style: new TextStyle(color: Colors.white), | |
|                     ), | |
|                   ), | |
|                 ), | |
|                 new ElevatedButton( | |
|                   style: ElevatedButton.styleFrom( | |
|                     shape: RoundedRectangleBorder( | |
|                       borderRadius: BorderRadius.circular(18.0), | |
|                     ), | |
|                     primary: Colors.green, | |
|                     padding: new EdgeInsets.all(10.0), | |
|                   ), | |
|                   onPressed: () => swipeRight(img), | |
|                   child: new Container( | |
|                     height: 30.0, | |
|                     width: 100.0, | |
|                     alignment: Alignment.center, | |
|                     decoration: new BoxDecoration( | |
|                       color: Colors.green, | |
|                       borderRadius: new BorderRadius.circular(60.0), | |
|                     ), | |
|                     child: new Text( | |
|                       "Interested", | |
|                       style: new TextStyle(color: Colors.white), | |
|                     ), | |
|                   ), | |
|                 ), | |
|               ], | |
|             ) | |
|           ], | |
|         ), | |
|       ), | |
|     ), | |
|   ); | |
| }
 | |
| 
 |