This commit is contained in:
bestonemitRam
2025-01-29 00:59:14 +05:30
parent 3121e0ee36
commit 5c69ac3322
20 changed files with 1638 additions and 649 deletions

View File

@@ -1,9 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_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/utils/constants/assets_constant.dart';
import 'package:grocery_app/utils/constants/color_constant.dart';
import 'package:grocery_app/utils/constants/shared_pref_utils.dart';
import 'package:grocery_app/utils/extensions/uicontext.dart';
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
import 'package:provider/provider.dart';
@@ -129,6 +133,8 @@ class _BestDealScreenState extends State<BestDealScreen> {
),
),
),
body: itemBestdeal());
}
@@ -144,53 +150,84 @@ class _BestDealScreenState extends State<BestDealScreen> {
child: GridView.builder(
itemCount: provider.bestdeal.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: MediaQuery.of(context).size.width /
(MediaQuery.of(context).size.height / 1.5),
crossAxisSpacing: 10,
mainAxisSpacing: 10),
crossAxisCount: 2,
childAspectRatio: MediaQuery.of(context).size.width /
(MediaQuery.of(context).size.height / 1.5),
crossAxisSpacing: 10,
mainAxisSpacing: 10,
),
itemBuilder: (context, index) {
var bestdealproduct = provider.bestdeal[index];
return Container(
return
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
blurRadius: 1,
offset: const Offset(5, 5),
),
]),
color: Colors.white,
borderRadius: BorderRadius.circular(15),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
blurRadius: 1,
offset: const Offset(5, 5),
),
],
),
child: Padding(
padding: const EdgeInsets.all(5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: 160,
width: MediaQuery.sizeOf(context).width,
// width: 150,
height: MediaQuery.of(context).size.height *
0.15, // Dynamic height
width: MediaQuery.of(context).size.width *
0.4, // Dynamic width
decoration: BoxDecoration(
color: APPCOLOR.bgGrey,
borderRadius: BorderRadius.circular(15)),
color: APPCOLOR.bgGrey,
borderRadius: BorderRadius.circular(15),
),
child: Stack(
alignment: Alignment.center,
children: [
AppNetworkImage(
height: 150,
width: 140,
Center(
child: AppNetworkImage(
height: MediaQuery.of(context).size.height * 0.13,
width: MediaQuery.of(context).size.width * 0.35,
imageUrl:
bestdealproduct.productImages?.first.url ??
"",
backGroundColor: Colors.transparent),
backGroundColor: Colors.transparent,
),
),
Positioned(
right: 5,
top: 5,
child: Icon(Icons.favorite_border))
right: 5,
top: 5,
child: InkWell(
onTap: () async {
if (await SharedPrefUtils.getToken() !=
null) {
provider.toggleWishlist(
context, bestdealproduct.id!);
} else {
context.push(MyRoutes.LOGIN);
}
},
child: Icon(
provider.wishlist
.contains(bestdealproduct.id)
? Icons.favorite
: Icons.favorite_border,
color: provider.wishlist
.contains(bestdealproduct.id)
? Colors.red
: Colors.grey,
),
),
),
],
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.005),
Text(
bestdealproduct.name ?? "",
textAlign: TextAlign.left,
@@ -198,23 +235,19 @@ class _BestDealScreenState extends State<BestDealScreen> {
overflow: TextOverflow.ellipsis,
style: context.customMedium(APPCOLOR.balck1A1A1A, 16),
),
const SizedBox(
height: 5,
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.005),
Text(
bestdealproduct.unit ?? "",
textAlign: TextAlign.left,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: context.customMedium(
Colors.grey.withOpacity(0.8), 12),
),
const SizedBox(
height: 3,
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.005,
Colors.grey.withOpacity(0.8),
12,
),
),
Spacer(),
Row(
children: [
Row(
@@ -242,13 +275,14 @@ class _BestDealScreenState extends State<BestDealScreen> {
),
],
),
const Spacer(),
Spacer(),
Align(
alignment: Alignment.centerRight,
child: Container(
height:
MediaQuery.of(context).size.height * 0.035,
width: MediaQuery.of(context).size.width * 0.1,
width: MediaQuery.of(context).size.width *
0.12, // Adjusted dynamic width
decoration: BoxDecoration(
color: APPCOLOR.lightGreen,
borderRadius: BorderRadius.circular(5),
@@ -271,7 +305,145 @@ class _BestDealScreenState extends State<BestDealScreen> {
},
),
);
// Padding(
// padding: const EdgeInsets.all(15),
// child: GridView.builder(
// itemCount: provider.bestdeal.length,
// gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
// crossAxisCount: 2,
// childAspectRatio: MediaQuery.of(context).size.width /
// (MediaQuery.of(context).size.height / 1.5),
// crossAxisSpacing: 10,
// mainAxisSpacing: 10),
// itemBuilder: (context, index) {
// var bestdealproduct = provider.bestdeal[index];
// return Container(
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(15),
// boxShadow: [
// BoxShadow(
// color: Colors.grey.withOpacity(0.1),
// blurRadius: 1,
// offset: const Offset(5, 5),
// ),
// ]),
// child: Padding(
// padding: const EdgeInsets.all(5),
// child:
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Container(
// height: 100.h,
// width: MediaQuery.sizeOf(context).width,
// // width: 150,
// decoration: BoxDecoration(
// color: APPCOLOR.bgGrey,
// borderRadius: BorderRadius.circular(15)),
// child: Stack(
// alignment: Alignment.center,
// children: [
// AppNetworkImage(
// height: 90.h,
// width: 140,
// imageUrl:
// bestdealproduct.productImages?.first.url ??
// "",
// backGroundColor: Colors.transparent),
// Positioned(
// right: 5,
// top: 5,
// child: Icon(Icons.favorite_border))
// ],
// ),
// ),
// Text(
// bestdealproduct.name ?? "",
// textAlign: TextAlign.left,
// maxLines: 2,
// overflow: TextOverflow.ellipsis,
// style: context.customMedium(APPCOLOR.balck1A1A1A, 16),
// ),
// const SizedBox(
// height: 5,
// ),
// Text(
// bestdealproduct.unit ?? "",
// textAlign: TextAlign.left,
// maxLines: 1,
// overflow: TextOverflow.ellipsis,
// style: context.customMedium(
// Colors.grey.withOpacity(0.8), 12),
// ),
// const SizedBox(
// height: 3,
// ),
// SizedBox(
// height: MediaQuery.of(context).size.height * 0.005,
// ),
// Spacer(),
// Row(
// children: [
// Row(
// children: [
// Text(
// "\$${bestdealproduct.discountPrice ?? ""} ",
// textAlign: TextAlign.left,
// maxLines: 1,
// overflow: TextOverflow.ellipsis,
// style: context.customSemiBold(Colors.black, 12),
// ),
// Text(
// "\$${bestdealproduct.basePrice ?? ""}",
// textAlign: TextAlign.left,
// maxLines: 1,
// overflow: TextOverflow.ellipsis,
// style: context
// .customMedium(
// Colors.grey.withOpacity(0.8),
// 12,
// )
// .copyWith(
// decoration: TextDecoration.lineThrough,
// ),
// ),
// ],
// ),
// const Spacer(),
// Align(
// alignment: Alignment.centerRight,
// child: Container(
// height:
// MediaQuery.of(context).size.height * 0.035,
// width: MediaQuery.of(context).size.width * 0.1,
// decoration: BoxDecoration(
// color: APPCOLOR.lightGreen,
// borderRadius: BorderRadius.circular(5),
// ),
// child: Center(
// child: Text(
// 'Add',
// style:
// context.customRegular(Colors.white, 12),
// ),
// ),
// ),
// ),
// ],
// ),
// ],
// ),
// ),
// );
// },
// ),
// );
}
});
}
}

View File

@@ -1,10 +1,12 @@
import 'package:flutter/material.dart';
import 'package:grocery_app/src/common_widget/network_image.dart';
import 'package:grocery_app/src/data/product_model.dart';
import 'package:grocery_app/src/logic/provider/home_provider.dart';
import 'package:grocery_app/src/ui/header.dart';
import 'package:grocery_app/src/ui/widgets/custom_title.dart';
import 'package:grocery_app/utils/constants/color_constant.dart';
import 'package:grocery_app/utils/extensions/uicontext.dart';
import 'package:provider/provider.dart';
class FavouriteScreen extends StatefulWidget {
@override
@@ -16,18 +18,21 @@ class _FavouriteScreenState extends State<FavouriteScreen>
late AnimationController _animationController;
late Animation<double> _animation;
List<ProductModel> _favProducts = [
ProductModel("", 'Bell pepper red', '7pcs', '\$4.99'),
ProductModel("", 'Ginger', '1kg', '\$4.99'),
ProductModel("", 'Egg pasta', '30gm', '\$15.9'),
];
// List<ProductModel> _favProducts = [
// ProductModel("", 'Bell pepper red', '7pcs', '\$4.99'),
// ProductModel("", 'Ginger', '1kg', '\$4.99'),
// ProductModel("", 'Egg pasta', '30gm', '\$15.9'),
// ];
@override
void initState() {
Provider.of<ProductProvider>(context, listen: false)
.gettAllWishList(context);
_animationController = AnimationController(
duration: const Duration(milliseconds: 1000),
vsync: this,
);
super.initState();
}
@@ -41,6 +46,82 @@ class _FavouriteScreenState extends State<FavouriteScreen>
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
// floatingActionButton: Padding(
// padding: const EdgeInsets.only(left: 30),
// child: Container(
// height: 80,
// width: MediaQuery.sizeOf(context).width,
// decoration: BoxDecoration(
// color: APPCOLOR.lightGreen,
// borderRadius: BorderRadius.circular(15)),
// child: Padding(
// padding: const EdgeInsets.all(10),
// child: Row(
// children: [
// SizedBox(
// width: 80,
// child: Stack(
// children: [
// Container(
// height: 70,
// width: 70,
// decoration: BoxDecoration(
// color: Colors.white.withOpacity(0.5),
// borderRadius: BorderRadius.circular(10)),
// ),
// const Positioned(
// left: 20,
// bottom: 0,
// top: 0,
// right: 0,
// child: AppNetworkImage(
// height: 70,
// width: 70,
// radius: 10,
// imageUrl:
// "https://5.imimg.com/data5/SELLER/Default/2024/2/385126988/OL/DA/VW/8627346/1l-fortune-sunflower-oil.jpg",
// backGroundColor: Colors.white,
// ),
// ),
// ],
// ),
// ),
// const SizedBox(
// width: 10,
// ),
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Text(
// '2 Items',
// style: context.customRegular(Colors.white, 18),
// ),
// Text(
// '\$25',
// style: context.customExtraBold(Colors.white, 20),
// )
// ],
// ),
// const Spacer(),
// Text(
// 'View Cart',
// style: context.customMedium(Colors.white, 24),
// ),
// const SizedBox(
// width: 10,
// ),
// const Icon(
// Icons.arrow_forward,
// color: Colors.white,
// size: 35,
// ),
// ],
// ),
// ),
// ),
// ),
body: Padding(
padding: context.bodyAllPadding.copyWith(
top: 0,
@@ -48,105 +129,95 @@ class _FavouriteScreenState extends State<FavouriteScreen>
child: Column(
children: [
Header(),
// CustomTitle(title: 'Favourite'),
Expanded(
child: ListView.separated(
itemCount: _favProducts.length,
shrinkWrap: true,
padding: const EdgeInsets.all(16),
itemBuilder: (_, index) {
_animation = Tween<double>(begin: 0.0, end: 1.0).animate(
CurvedAnimation(
parent: _animationController,
curve: Interval(
(0.5 / _favProducts.length) * index,
1,
curve: Curves.easeOut,
),
),
);
_animationController.forward(from: 0);
return AnimatedBuilder(
animation: _animationController,
builder: (_, child) {
return FadeTransition(
opacity: _animation,
child: Transform(
transform: Matrix4.translationValues(
0.0,
50 * (1.0 - _animation.value),
0.0,
),
child: child,
),
);
},
child: ListTile(
onTap: () {},
leading: Container(
itemList(),
Consumer<ProductProvider>(
builder: (context, wishListProvider, _) {
return wishListProvider.totalItems > 0
? Padding(
padding: const EdgeInsets.only(),
child: Container(
height: 80,
width: MediaQuery.sizeOf(context).width,
decoration: BoxDecoration(
color: Colors.greenAccent.withOpacity(0.1),
borderRadius: BorderRadius.circular(5),
),
child: AppNetworkImage(
height: 80,
width: 80,
imageUrl:
'https://i.pinimg.com/originals/a5/f3/5f/a5f35fb23e942809da3df91b23718e8d.png',
backGroundColor: APPCOLOR.bgGrey,
radius: 10,
),
),
// Image.asset(_favProducts[index].productImage),
title: Text(_favProducts[index].productName),
subtitle: Text(_favProducts[index].quantity),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(_favProducts[index].amount),
Icon(
Icons.navigate_next_rounded,
size: 32,
color: APPCOLOR.gray,
)
],
),
),
);
},
separatorBuilder: (_, index) {
_animation = Tween<double>(begin: 0.0, end: 1.0).animate(
CurvedAnimation(
parent: _animationController,
curve: Interval(
(0.5 / _favProducts.length) * index,
1,
curve: Curves.easeOut,
),
),
);
_animationController.forward(from: 0);
return AnimatedBuilder(
animation: _animationController,
builder: (_, child) {
return FadeTransition(
opacity: _animation,
child: Transform(
transform: Matrix4.translationValues(
0.0,
50 * (1.0 - _animation.value),
0.0,
color: APPCOLOR.lightGreen,
borderRadius: BorderRadius.circular(15)),
child: Padding(
padding: const EdgeInsets.all(10),
child: Row(
children: [
SizedBox(
width: 80,
child: Stack(
children: [
Container(
height: 70,
width: 70,
decoration: BoxDecoration(
color:
Colors.white.withOpacity(0.5),
borderRadius:
BorderRadius.circular(10)),
),
const Positioned(
left: 20,
bottom: 0,
top: 0,
right: 0,
child: AppNetworkImage(
height: 70,
width: 70,
radius: 10,
imageUrl:
"https://5.imimg.com/data5/SELLER/Default/2024/2/385126988/OL/DA/VW/8627346/1l-fortune-sunflower-oil.jpg",
backGroundColor: Colors.white,
),
),
],
),
),
const SizedBox(
width: 10,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
'2 Items',
style: context.customRegular(
Colors.white, 18),
),
Text(
'\$25',
style: context.customExtraBold(
Colors.white, 20),
)
],
),
const Spacer(),
Text(
'View Cart',
style: context.customMedium(Colors.white, 24),
),
const SizedBox(
width: 10,
),
const Icon(
Icons.arrow_forward,
color: Colors.white,
size: 35,
),
],
),
child: child,
),
);
},
child: Divider(),
);
},
),
),
),
)
: SizedBox.shrink();
}),
// Padding(
// padding:
// const EdgeInsets.only(left: 16, right: 16, top: 16, bottom: 78),
@@ -161,4 +232,308 @@ class _FavouriteScreenState extends State<FavouriteScreen>
),
);
}
Widget itemList() {
return Consumer<ProductProvider>(builder: (context, provider, child) {
if (provider.isWishListItemLoadingg) {
return Expanded(child: Center(child: CircularProgressIndicator()));
} else if (provider.wishListItem.isEmpty) {
return Expanded(child: Center(child: Text('No products available')));
} else {
return Expanded(
child: ListView.separated(
itemCount: provider.wishListItem.length,
shrinkWrap: true,
padding: const EdgeInsets.all(16),
itemBuilder: (_, index) {
final item = provider.wishListItem[index];
final product = item.product!;
final productId = product.id!;
final animation = Tween<double>(begin: 0.0, end: 1.0).animate(
CurvedAnimation(
parent: _animationController,
curve: Interval(
(0.5 / provider.wishListItem.length) * index,
1,
curve: Curves.easeOut,
),
),
);
_animationController.forward(from: 0);
return Container(
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.1),
blurRadius: 5,
offset: Offset(2, 2),
),
],
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Flexible(
flex: 3,
child: Container(
height: 100,
width: 100,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: APPCOLOR.bgGrey,
),
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: AppNetworkImage(
imageUrl:
"https://i.pinimg.com/originals/a5/f3/5f/a5f35fb23e942809da3df91b23718e8d.png",
backGroundColor: APPCOLOR.bgGrey,
height: 20,
width: 20,
),
),
),
),
Flexible(
flex: 4,
child: Padding(
padding: const EdgeInsets.only(left: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
product.name ?? "",
style: context.customMedium(
APPCOLOR.balck1A1A1A, 14),
//textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
"\$${product.discountPrice}",
style:
context.customSemiBold(Colors.black, 14),
),
SizedBox(width: 5),
Text(
"\$${product.basePrice ?? ""}",
style: context
.customMedium(
Colors.grey.withOpacity(0.8), 12)
.copyWith(
decoration: TextDecoration.lineThrough,
),
),
],
),
SizedBox(height: 10),
// Add to Cart Button
],
),
),
),
Spacer(),
GestureDetector(
onTap: provider.isLoading[productId] ?? false
? null
: () => provider.addToCart(context, productId),
child: Container(
height: 35,
width: 50,
decoration: BoxDecoration(
color: provider.cartItems.contains(productId)
? Colors.grey
: APPCOLOR.lightGreen,
borderRadius: BorderRadius.circular(5),
),
child: Center(
child: provider.isLoading[productId] ?? false
? CircularProgressIndicator(
color: Colors.white, strokeWidth: 2)
: Text(
provider.cartItems.contains(productId)
? 'Added'
: 'Add',
style:
context.customRegular(Colors.white, 14),
),
),
),
),
],
),
);
},
separatorBuilder: (_, __) => Divider(),
),
);
// Expanded(
// child: ListView.separated(
// itemCount: provider.wishListItem.length,
// shrinkWrap: true,
// padding: const EdgeInsets.all(16),
// itemBuilder: (_, index) {
// _animation = Tween<double>(begin: 0.0, end: 1.0).animate(
// CurvedAnimation(
// parent: _animationController,
// curve: Interval(
// (0.5 / provider.wishListItem.length) * index,
// 1,
// curve: Curves.easeOut,
// ),
// ),
// );
// _animationController.forward(from: 0);
// var item = provider.wishListItem[index];
// return AnimatedBuilder(
// animation: _animationController,
// builder: (_, child) {
// return FadeTransition(
// opacity: _animation,
// child: Transform(
// transform: Matrix4.translationValues(
// 0.0,
// 50 * (1.0 - _animation.value),
// 0.0,
// ),
// child: child,
// ),
// );
// },
// child: ListTile(
// onTap: () {},
// leading: Container(
// decoration: BoxDecoration(
// color: Colors.greenAccent.withOpacity(0.1),
// borderRadius: BorderRadius.circular(5),
// ),
// child: AppNetworkImage(
// height: 80,
// width: 80,
// imageUrl:
// 'https://i.pinimg.com/originals/a5/f3/5f/a5f35fb23e942809da3df91b23718e8d.png',
// backGroundColor: APPCOLOR.bgGrey,
// radius: 10,
// ),
// ),
// // Image.asset(_favProducts[index].productImage),
// title: Text(item.product!.name ?? ""),
// subtitle: Text(item.product!.unit ?? ""),
// trailing: Row(
// children: [
// Column(
// mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Text("\$" + item.product!.discountPrice),
// Text(
// "\$${item.product!.basePrice ?? ""}",
// textAlign: TextAlign.left,
// maxLines: 1,
// overflow: TextOverflow.ellipsis,
// style: context
// .customMedium(
// Colors.grey.withOpacity(0.8),
// 12,
// )
// .copyWith(
// decoration: TextDecoration.lineThrough,
// ),
// ),
// ],
// ),
// Align(
// alignment: Alignment.centerRight,
// child: GestureDetector(
// // onTap: provider.isLoading[bestdealproduct.id] ??
// // false
// // ? null
// // : () => provider.addToCart(
// // context, bestdealproduct.id!),
// child: Container(
// height: MediaQuery.of(context).size.height * 0.035,
// width: MediaQuery.of(context).size.width * 0.1,
// decoration: BoxDecoration(
// color:
// // provider.cartItems
// // .contains(bestdealproduct.id)
// // ? Colors.grey
// // :
// APPCOLOR.lightGreen,
// borderRadius: BorderRadius.circular(5),
// ),
// child: Center(
// child:
// // provider.isLoading[
// // bestdealproduct.id] ??
// // false
// // ? CircularProgressIndicator(
// // color: Colors.white, strokeWidth: 2)
// // :
// Text(
// // provider.cartItems.contains(
// // bestdealproduct.id)
// // ? 'Added'
// // :
// 'Add',
// style: context.customRegular(Colors.white, 12),
// ),
// ),
// ),
// ),
// ),
// ],
// ),
// ),
// );
// },
// separatorBuilder: (_, index) {
// _animation = Tween<double>(begin: 0.0, end: 1.0).animate(
// CurvedAnimation(
// parent: _animationController,
// curve: Interval(
// (0.5 / provider.wishListItem.length) * index,
// 1,
// curve: Curves.easeOut,
// ),
// ),
// );
// _animationController.forward(from: 0);
// return AnimatedBuilder(
// animation: _animationController,
// builder: (_, child) {
// return FadeTransition(
// opacity: _animation,
// child: Transform(
// transform: Matrix4.translationValues(
// 0.0,
// 50 * (1.0 - _animation.value),
// 0.0,
// ),
// child: child,
// ),
// );
// },
// child: Divider(),
// );
// },
// ),
// );
}
});
}
}

View File

@@ -1,9 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_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/utils/constants/assets_constant.dart';
import 'package:grocery_app/utils/constants/color_constant.dart';
import 'package:grocery_app/utils/constants/shared_pref_utils.dart';
import 'package:grocery_app/utils/extensions/uicontext.dart';
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
import 'package:provider/provider.dart';
@@ -36,6 +39,8 @@ class _FruitVeggieDetailState extends State<FruitVeggieDetail> {
width: 20,
child: InkWell(
onTap: () {
Provider.of<ProductProvider>(context, listen: false)
.gettAllProduct(context, "");
Navigator.of(context).pop();
},
child: SvgPicture.asset(
@@ -71,8 +76,7 @@ class _FruitVeggieDetailState extends State<FruitVeggieDetail> {
);
}
Widget productWidget()
{
Widget productWidget() {
return Consumer<ProductProvider>(builder: (context, provider, child) {
if (provider.isLoadingg) {
return Padding(
@@ -143,7 +147,26 @@ class _FruitVeggieDetailState extends State<FruitVeggieDetail> {
Positioned(
right: 5,
top: 5,
child: Icon(Icons.favorite_border),
child: InkWell(
onTap: () async {
if (await SharedPrefUtils.getToken() !=
null)
{
provider.toggleWishlist(
context, product.id!);
} else {
context.push(MyRoutes.LOGIN);
}
},
child: Icon(
provider.wishlist.contains(product.id)
? Icons.favorite
: Icons.favorite_border,
color: provider.wishlist.contains(product.id)
? Colors.red
: Colors.grey,
),
),
),
],
),

View File

@@ -1,5 +1,6 @@
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.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';
@@ -235,8 +236,7 @@ class _HomeScreenState extends State<HomeScreen> {
child: InkWell(
onTap: () async {
if (await SharedPrefUtils.getToken() !=
null)
{
null) {
provider.toggleWishlist(
context, bestdealproduct.id!);
} else {
@@ -285,6 +285,7 @@ class _HomeScreenState extends State<HomeScreen> {
SizedBox(
height: MediaQuery.of(context).size.height * 0.005,
),
const Spacer(),
Row(
children: [
Row(
@@ -313,22 +314,77 @@ class _HomeScreenState extends State<HomeScreen> {
),
],
),
// Align(
// alignment: Alignment.centerRight,
// child: InkWell(
// onTap: () async {
// bool success = await provider.addToCart(context, bestdealproduct.id!);
// if (success) {
// Fluttertoast.showToast(
// msg: "Product added to cart!",
// toastLength: Toast.LENGTH_SHORT,
// gravity: ToastGravity.BOTTOM,
// backgroundColor: Colors.green,
// textColor: Colors.white,
// fontSize: 14.0,
// );
// }
// },
// child: Container(
// height:
// MediaQuery.of(context).size.height * 0.035,
// width: MediaQuery.of(context).size.width * 0.1,
// decoration: BoxDecoration(
// color: APPCOLOR.lightGreen,
// borderRadius: BorderRadius.circular(5),
// ),
// child: Center(
// child: Text(
// 'Add',
// style:
// context.customRegular(Colors.white, 12),
// ),
// ),
// ),
// ),
// ),
const Spacer(),
Align(
alignment: Alignment.centerRight,
child: Container(
height:
MediaQuery.of(context).size.height * 0.035,
width: MediaQuery.of(context).size.width * 0.1,
decoration: BoxDecoration(
color: APPCOLOR.lightGreen,
borderRadius: BorderRadius.circular(5),
),
child: Center(
child: Text(
'Add',
style:
context.customRegular(Colors.white, 12),
child: GestureDetector(
onTap: provider.isLoading[bestdealproduct.id] ??
false
? null
: () => provider.addToCart(
context, bestdealproduct.id!),
child: Container(
height: MediaQuery.of(context).size.height *
0.035,
width:
MediaQuery.of(context).size.width * 0.1,
decoration: BoxDecoration(
color: provider.cartItems
.contains(bestdealproduct.id)
? Colors.grey
: APPCOLOR.lightGreen,
borderRadius: BorderRadius.circular(5),
),
child: Center(
child: provider.isLoading[
bestdealproduct.id] ??
false
? CircularProgressIndicator(
color: Colors.white, strokeWidth: 2)
: Text(
provider.cartItems.contains(
bestdealproduct.id)
? 'Added'
: 'Add',
style: context.customRegular(
Colors.white, 12),
),
),
),
),

View File

@@ -29,12 +29,12 @@ class _OnBoardingScreenState extends State<OnBoardingScreen> {
SharedPrefUtils.setFreshInstall(isFresh: false).then(
(value) => context.clearAndPush(routePath: MyRoutes.BOTTOMNAV, args: 0),
);
}
// Navigator.pushReplacement(context, MaterialPageRoute(
// builder: (context) {
// return const LoginScreen();
// },
// ));
skipbyarrowFunction() {
SharedPrefUtils.setFreshInstall(isFresh: false).then(
(value) => context.clearAndPush(routePath: MyRoutes.LOGIN, args: 0),
);
}
onChangedFunction(int index) {
@@ -446,7 +446,8 @@ class _OnBoardingScreenState extends State<OnBoardingScreen> {
child: Center(
child: InkWell(
onTap: () {
skipFunction();
skipbyarrowFunction();
//skipFunction();
},
child: Container(
height: 70,

View File

@@ -29,21 +29,11 @@ class _SplashScreenState extends State<SplashScreen> {
Future.delayed(const Duration(seconds: 2), () async {
if (await SharedPrefUtils.isFreshInstall()) {
context.clearAndPush(routePath: MyRoutes.ONBOARDING);
} else
{
print("kdsbfjhdkjfdfghv ${await SharedPrefUtils.getToken()}");
if (await SharedPrefUtils.getToken() == "1" ||
await SharedPrefUtils.getToken() == null) {
// context.clearAndPush(routePath: MyRoutes.SELECTACCOUNT);
} else {
context.clearAndPush(routePath: MyRoutes.BOTTOMNAV);
}
} else {
context.clearAndPush(routePath: MyRoutes.BOTTOMNAV);
}
});
Future.delayed(const Duration(seconds: 2), () async {
context.clearAndPush(routePath: MyRoutes.ONBOARDING);
});
super.initState();
}