new design pharmacy home

merge-requests/549/head
hussam al-habibeh 4 years ago
parent af0316367d
commit a5e7541394

@ -17,7 +17,6 @@ import 'package:rating_bar/rating_bar.dart';
import 'dart:math' as math;
class ProductTileItem extends StatelessWidget {
final AppSharedPreferences sharedPref = AppSharedPreferences();
final PharmacyProduct item;
@ -46,13 +45,13 @@ class ProductTileItem extends StatelessWidget {
});
}
if(items.length >= 15){
if (items.length >= 15) {
items.removeAt(0);
// lastVisited = lastVisited.replaceFirst(RegExp('$itemToRemove'), '');
}
lastVisited = "";
for(int i = items.length - 1; i >= 0; i--){
for (int i = items.length - 1; i >= 0; i--) {
if (lastVisited == "") {
// it means there is no lastVisited yet
lastVisited = "${items[i]}";
@ -62,7 +61,6 @@ class ProductTileItem extends StatelessWidget {
}
}
if (!isIdExist) {
if (lastVisited == "") {
// it means there is no lastVisited yet
@ -84,9 +82,8 @@ class ProductTileItem extends StatelessWidget {
child: Container(
margin: EdgeInsets.all(7),
decoration: BoxDecoration(
border:Border.all(color: Colors.grey.shade300,width: 0.5),
borderRadius: BorderRadius.circular(8)
),
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(
@ -115,16 +112,18 @@ class ProductTileItem extends StatelessWidget {
Container(
width: double.infinity,
height: MediaQuery.of(context).size.width * 0.3,
padding: EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14),
padding:
EdgeInsets.only(left: 20, right: 20, top: 14, bottom: 14),
color: Colors.white,
child: InkWell(
onTap: () {
},
onTap: () {},
child: Container(
width: double.infinity,
height: double.infinity,
clipBehavior: Clip.antiAlias,
decoration: containerRadiusWithGradientServices(33, lightColor: Colors.transparent, darkColor: Colors.transparent),
decoration: containerRadiusWithGradientServices(33,
lightColor: Colors.transparent,
darkColor: Colors.transparent),
child: Stack(
children: [
Container(
@ -139,95 +138,101 @@ class ProductTileItem extends StatelessWidget {
Container(
margin: EdgeInsets.fromLTRB(0, 0, 0, 0),
alignment: Alignment.center,
child: (item.images != null && item.images.length > 0)
child: (item.images != null &&
item.images.length > 0)
? Image.network(
item.images[0].src,
fit: BoxFit.cover,
height: itemHeight / 2,
)
item.images[0].src,
fit: BoxFit.cover,
height: itemHeight / 2,
)
: Image.asset(
"assets/images/no_image.png",
fit: BoxFit.cover,
height: itemHeight / 2,
),
"assets/images/no_image.png",
fit: BoxFit.cover,
height: itemHeight / 2,
),
),
],
),
),
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: Text(
"E-Prescription Is required",
style: TextStyle(
color: Colors.white,
fontSize: 9,
height: 0.8,
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-Pr5escription \n Is required",
style: TextStyle(
color: Colors.white,
fontSize: 7,
//letterSpacing: -0.27,
height: 1.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: 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(
@ -257,17 +262,17 @@ class ProductTileItem extends StatelessWidget {
),
Row(
children: [
// Expanded(
RatingBar.readOnly(
initialRating: item.approvedRatingSum.toDouble(),
size: 15.0,
filledColor: Colors.yellow[700],
emptyColor: Colors.grey[500],
isHalfAllowed: true,
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star,
),
// 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,
@ -281,14 +286,16 @@ class ProductTileItem extends StatelessWidget {
// .toDouble()
// : 0,
// forceStars: true),
// ),
// ),
],
),
],
),
),
),
SizedBox(height: 5,),
SizedBox(
height: 5,
),
],
),
),

@ -28,15 +28,17 @@ class BestSellerWidget extends StatelessWidget {
productType: 20,
)),
if (model.state != ViewState.BusyLocal)
Container(
height: MediaQuery.of(context).size.height / 3 + 20,
child: ListView.builder(
itemBuilder: (ctx, i) =>
ProductTileItem(model.bestSellerProduct[i], MediaQuery.of(context).size.height / 4 + 20),
scrollDirection: Axis.horizontal,
itemCount: model.bestSellerProduct.length,
),
) else
Container(
height: MediaQuery.of(context).size.height / 3 + 20,
child: ListView.builder(
itemBuilder: (ctx, i) => ProductTileItem(
model.bestSellerProduct[i],
MediaQuery.of(context).size.height / 4 + 20),
scrollDirection: Axis.horizontal,
itemCount: model.bestSellerProduct.length,
),
)
else
Container(
height: 80,
child: Center(

@ -5,6 +5,7 @@ import 'package:diplomaticquarterapp/pages/final_products_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/ProductTileItem.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/widgets/home/ViewAllHomeWidget.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/network_base_view.dart';
import 'package:flutter/material.dart';

@ -18,42 +18,46 @@ class RecentlyViewedWidget extends StatelessWidget {
builder: (_, model, wi) => NetworkBaseView(
isLocalLoader: true,
baseViewModel: model,
child: model.lastVisitedProducts.isNotEmpty ? Container(
child: Column(
children: [
ViewAllHomeWidget(
TranslationBase.of(context).recentlyViewed,
FinalProductsPage(
id: "",
productType: 3,
)),
if (model.state != ViewState.BusyLocal)
Container(
height: model.lastVisitedProducts.length > 0
? MediaQuery.of(context).size.height / 3 + 20
: 0,
child: ListView.builder(
itemBuilder: (ctx, i) =>
ProductTileItem(model.lastVisitedProducts[i], MediaQuery.of(context).size.height / 4 + 20),
scrollDirection: Axis.horizontal,
itemCount: model.lastVisitedProducts.length,
),
)
else
Container(
height: 80,
child: Center(
child:CircularProgressIndicator(
backgroundColor: Colors.white,
valueColor: AlwaysStoppedAnimation<Color>(
Colors.grey[500],
child: model.lastVisitedProducts.isNotEmpty
? Container(
child: Column(
children: [
ViewAllHomeWidget(
TranslationBase.of(context).recentlyViewed,
FinalProductsPage(
id: "",
productType: 3,
)),
if (model.state != ViewState.BusyLocal)
Container(
height: model.lastVisitedProducts.length > 0
? MediaQuery.of(context).size.height / 3 + 20
: 0,
child: ListView.builder(
itemBuilder: (ctx, i) => ProductTileItem(
model.lastVisitedProducts[i],
MediaQuery.of(context).size.height / 4 +
20),
scrollDirection: Axis.horizontal,
itemCount: model.lastVisitedProducts.length,
),
)
else
Container(
height: 80,
child: Center(
child: CircularProgressIndicator(
backgroundColor: Colors.white,
valueColor: AlwaysStoppedAnimation<Color>(
Colors.grey[500],
),
),
),
),
),
),
],
),
],
),
) : Container(),
)
: Container(),
));
}
}

@ -4,11 +4,9 @@ import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/material.dart';
class ViewAllHomeWidget extends StatelessWidget {
final String title;
final Widget navigationWidget;
ViewAllHomeWidget(this.title, this.navigationWidget);
@override
@ -23,22 +21,32 @@ class ViewAllHomeWidget extends StatelessWidget {
bold: true,
fontSize: 16,
),
BorderedButton(
TranslationBase.of(context).viewAll,
hasBorder: true,
borderColor: Colors.green,
textColor: Colors.green,
fontWeight: FontWeight.bold,
vPadding: 6,
hPadding: 14,
handler: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
navigationWidget));
InkWell(
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => navigationWidget));
},
child: Texts(
TranslationBase.of(context).viewAll,
color: Color(0xffD02127),
decoration: TextDecoration.underline,
fontWeight: FontWeight.w600,
fontSize: 12.0,
),
),
// BorderedButton(
// TranslationBase.of(context).viewAll,
// hasBorder: true,
// borderColor: Colors.green,
// textColor: Colors.green,
// fontWeight: FontWeight.bold,
// vPadding: 6,
// hPadding: 14,
// handler: () {
// Navigator.push(context,
// MaterialPageRoute(builder: (context) => navigationWidget));
// },
// ),
],
),
);

Loading…
Cancel
Save