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/phramacy-product-detail-page.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.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:provider/provider.dart'; class ProductTileItem extends StatelessWidget { final AppSharedPreferences sharedPref = AppSharedPreferences(); final PharmacyProduct item; ProductTileItem(this.item); void productOnClick(BuildContext ctx) { _saveLastVisitProducts(); Navigator.push(ctx, FadePage(page: ProductDetailScreen(item))); } void _saveLastVisitProducts() async { String lastVisited = ""; bool isIdExist = false; // var data = await sharedPref.getObject(USER_PROFILE) ; // data['PatientID'] 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; } }); } 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: Card( elevation: 2, shape: Border(right: BorderSide(color: Colors.grey.shade300, width: 1)), margin: EdgeInsets.symmetric( horizontal: 8, vertical: 4, ), child: Container( padding: EdgeInsets.symmetric(horizontal: 0), width: MediaQuery.of(context).size.width / 3, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Stack( children: [ Container( margin: EdgeInsets.fromLTRB(0, 16, 0, 0), alignment: Alignment.center, child: (item.images != null && item.images.length > 0) ? Image.network( item.images[0].src, fit: BoxFit.cover, height: 80, ) : Image.asset( "assets/images/no_image.png", fit: BoxFit.cover, height: 80, ), ), Container( width: item.rxMessage != null ? MediaQuery.of(context).size.width / 5 : 0, padding: EdgeInsets.all(4), decoration: BoxDecoration( color: Color(0xffb23838), borderRadius: BorderRadius.only(topLeft: Radius.circular(6)), ), child: Texts( item.rxMessage != null ? item.rxMessage : "", color: Colors.white, regular: true, fontSize: 10, fontWeight: FontWeight.w400, ), ) ], ), Container( margin: EdgeInsets.symmetric( horizontal: 6, vertical: 0, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Texts( projectProvider.isArabic ? item.namen : item.name, regular: true, fontSize: 12, fontWeight: FontWeight.w400, ), Padding( padding: const EdgeInsets.only(top: 4, bottom: 4), child: Texts( "SAR ${item.price}", bold: true, fontSize: 14, ), ), Row( children: [ Expanded( child: StarRating( totalAverage: item.approvedTotalReviews > 0 ? (item.approvedRatingSum.toDouble() / item.approvedTotalReviews.toDouble()) .toDouble() : 0, forceStars: true), ), /*Texts( "(${item.approvedTotalReviews})", regular: true, fontSize: 10, fontWeight: FontWeight.w400, ),*/ ], ), ], ), ) ], ), ), ), ); } }