import 'package:auto_size_text/auto_size_text.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/product-detail.dart'; import 'package:diplomaticquarterapp/pages/pharmacies/screens/product-details/shared/icon_with_bg.dart'; import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/others/StarRating.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; import 'package:rating_bar/rating_bar.dart'; import 'dart:math' as math; class ProductTileItem extends StatelessWidget { final AppSharedPreferences sharedPref = AppSharedPreferences(); final PharmacyProduct item; final double itemHeight; ProductTileItem(this.item, this.itemHeight); void productOnClick(BuildContext ctx) { _saveLastVisitProducts(); Navigator.push(ctx, FadePage(page: ProductDetailPage(item))); } void _saveLastVisitProducts() async { String lastVisited = ""; bool isIdExist = false; List items = []; if (await this.sharedPref.getString(PHARMACY_LAST_VISITED_PRODUCTS) != null) { lastVisited = await this.sharedPref.getString(PHARMACY_LAST_VISITED_PRODUCTS); lastVisited.split(",").forEach((id) { if (id == item.id) { isIdExist = true; } items.add(id); }); } if (items.length >= 15) { items.removeAt(0); // lastVisited = lastVisited.replaceFirst(RegExp('$itemToRemove'), ''); } lastVisited = ""; for (int i = items.length - 1; i >= 0; i--) { if (lastVisited == "") { // it means there is no lastVisited yet lastVisited = "${items[i]}"; } else { // there is lastVisited id's and this product id is not found lastVisited += ",${items[i]}"; } } if (!isIdExist) { if (lastVisited == "") { // it means there is no lastVisited yet lastVisited = "${item.id}"; } else { // there is lastVisited id's and this product id is not found lastVisited += ",${item.id}"; } } sharedPref.setString(PHARMACY_LAST_VISITED_PRODUCTS, lastVisited); } @override Widget build(BuildContext context) { ProjectViewModel projectProvider = Provider.of(context); return InkWell( onTap: () => productOnClick(context), splashColor: Theme.of(context).primaryColor, child: Container( margin: EdgeInsets.all(7), decoration: BoxDecoration( border: Border.all(color: Colors.grey.shade300, width: 0.5), borderRadius: BorderRadius.circular(8)), padding: EdgeInsets.symmetric(horizontal: 4), width: MediaQuery.of(context).size.width / 2.8, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Stack( // children: [ // Container( // margin: EdgeInsets.fromLTRB(0, 0, 0, 0), // alignment: Alignment.center, // child: (item.images != null && item.images.length > 0) // ? Image.network( // item.images[0].src, // fit: BoxFit.cover, // height: itemHeight / 2, // ) // : Image.asset( // "assets/images/no_image.png", // fit: BoxFit.cover, // height: itemHeight / 2, // ), // ), // ], // ), Container( width: double.infinity, height: MediaQuery.of(context).size.width * 0.3, padding: EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14), color: Colors.white, child: InkWell( onTap: () {}, child: Container( width: double.infinity, height: double.infinity, clipBehavior: Clip.antiAlias, decoration: containerRadiusWithGradientServices(33, lightColor: Colors.transparent, darkColor: Colors.transparent), child: Stack( children: [ Container( width: double.infinity, height: double.infinity, //clipBehavior: Clip.antiAlias, // decoration: projectProvider.isArabic // ? containerBottomRightRadiusWithGradientForAr(0, lightColor: Colors.transparent, darkColor: Colors.transparent) // : containerBottomRightRadiusWithGradient(0, lightColor: Colors.red, darkColor: CustomColors.green), child: Stack( children: [ Container( margin: EdgeInsets.fromLTRB(0, 0, 0, 0), alignment: Alignment.center, child: (item.images != null && item.images.length > 0) ? Image.network( item.images[0].src, fit: BoxFit.cover, height: itemHeight / 2, ) : Image.asset( "assets/images/no_image.png", fit: BoxFit.cover, height: itemHeight / 2, ), ), ], ), ), if (item.rxMessage != null) projectProvider.isArabic ? Positioned( right: -16, top: 2, child: Transform.rotate( angle: math.pi / 4, child: Container( padding: EdgeInsets.only( left: 18, right: 18, top: 6, bottom: 3), color: CustomColors.accentColor, child: Padding( padding: EdgeInsets.all(2.0), child: Text( "الوصفة\n مطلوبة", style: TextStyle( color: Colors.white, fontSize: 7.5, height: 0.8, fontWeight: FontWeight.bold, letterSpacing: -0.27, ), ), ), ), ), ) : Positioned( left: -24, top: 2, child: Transform.rotate( angle: -math.pi / 4, child: Container( padding: EdgeInsets.only( left: 18, right: 18, top: 6, bottom: 3), color: CustomColors.accentColor, child: Text( "\n E-Prescription \n Is required", style: TextStyle( color: Colors.white, fontSize: 7.5, //letterSpacing: -0.27, height: 1.2, fontWeight: FontWeight.w600, ), ), ), ), ), ], ), ), ), ), // Padding( // padding: EdgeInsets.fromLTRB(1, 1, 1, 1), // child: Container( // width: item.rxMessage != null // ? MediaQuery.of(context).size.width / 1.0 // : 0, // padding: EdgeInsets.fromLTRB(8, 2, 8, 2), // decoration: BoxDecoration( // color: Color(0xffb23838), // ), // child: item.rxMessage != null // ? Texts( // projectProvider.isArabic // ? item.rxMessagen // : item.rxMessage, // color: Colors.white, // regular: true, // fontSize: 10, // fontWeight: FontWeight.w400, // ) // : Texts(""), // ), // ), // SizedBox(height: 4,), Padding( padding: const EdgeInsets.symmetric(horizontal: 4.0), child: Texts( projectProvider.isArabic ? item.namen : item.name, regular: true, fontSize: 12, fontWeight: FontWeight.w400, ), ), Expanded( child: Container( margin: EdgeInsets.symmetric( horizontal: 4, vertical: 0, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.end, children: [ Padding( padding: const EdgeInsets.only(top: 2, bottom: 2), child: Texts( "SAR ${item.price}", fontWeight: FontWeight.w600, fontSize: 14, ), ), Row( children: [ // Expanded( RatingBar.readOnly( initialRating: item.approvedRatingSum.toDouble(), size: 15.0, filledColor: Color(0xffD02127), emptyColor: Colors.grey[500], isHalfAllowed: true, halfFilledIcon: Icons.star_half, filledIcon: Icons.star, emptyIcon: Icons.star, ), Texts( "(${item.approvedTotalReviews})", regular: true, fontSize: 10, fontWeight: FontWeight.w400, ), SizedBox( width: 20.0, ), Icon( Icons.arrow_forward, size: 18, ), // StarRating( // totalAverage: item.approvedTotalReviews > 0 // ? (item.approvedRatingSum.toDouble() / // item.approvedTotalReviews.toDouble()) // .toDouble() // : 0, // forceStars: true), // ), ], ), ], ), ), ), SizedBox( height: 5, ), ], ), ), ); } }