productdetails

This commit is contained in:
2025-01-31 19:02:20 +05:30
parent 028155a1d7
commit 42aaa7cdad
32 changed files with 2803 additions and 1987 deletions

View File

@@ -97,12 +97,43 @@ class AddtocartProvider extends ChangeNotifier {
}
}
Map<String, bool> isRemoveItem = {};
Future<void> deleteItem(BuildContext context, id) async {
isRemoveItem[id] = true;
notifyListeners();
var data = {};
try {
var result = await _homeRepo.deleteItem(data, id);
return result.fold(
(error) {
isRemoveItem[id] = false;
notifyListeners();
},
(response) {
getItemCards(context);
isRemoveItem[id] = false;
notifyListeners();
},
);
} catch (e) {
isRemoveItem[id] = false;
notifyListeners();
}
}
final _homeRepo = getIt<ProductRepo>();
AllCartItems allitem = AllCartItems();
bool isLoaddcartItem = true;
Future<void> getItemCards(BuildContext context) async {
isLoaddcartItem = true;
notifyListeners();
var data = {};
try {
var result = await _homeRepo.getItemCards(data);
@@ -120,8 +151,7 @@ class AddtocartProvider extends ChangeNotifier {
notifyListeners();
},
);
} catch (e)
{
} catch (e) {
print("sfddsfdfff");
isLoaddcartItem = false;
notifyListeners();

View File

@@ -109,7 +109,7 @@ class AuthProvider extends ChangeNotifier {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong. Please try again."),
content: Text("Already have account Please login !"),
backgroundColor: Colors.red,
),
);
@@ -117,9 +117,52 @@ class AuthProvider extends ChangeNotifier {
}
}
// //login
Future<bool> loginOtp(String otp, BuildContext context) async {
context.showLoader(show: true);
var data = {
"phone": numberwithCode,
"otp": otp,
};
// //vendorRegister
try {
var result = await _authRepo.loginOtp(data);
return result.fold(
(error) {
// Show error Snackbar
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
return false; // Login failed
},
(response) {
// Login success
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("OTP Verify successful!"),
backgroundColor: Colors.green,
),
);
return true;
},
);
} catch (e) {
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Don't have a account ,please create now!"),
backgroundColor: Colors.red,
),
);
return false;
}
}
Future<bool> customerRegister(BuildContext context) async {
context.showLoader(show: true);
@@ -143,8 +186,7 @@ class AuthProvider extends ChangeNotifier {
);
return false; // Login failed
},
(response)
{
(response) {
// Login success
context.showLoader(show: false);
ScaffoldMessenger.of(context).showSnackBar(

View File

@@ -0,0 +1,16 @@
import 'package:flutter/material.dart';
class BottomNavProvider with ChangeNotifier {
int _currentIndex = 0;
PageController _pageController = PageController();
int get currentIndex => _currentIndex;
PageController get pageController => _pageController;
void setIndex(int index)
{
_currentIndex = index;
_pageController.jumpToPage(index);
notifyListeners();
}
}

View File

@@ -7,6 +7,7 @@ import 'package:grocery_app/src/data/all_cart_items.dart';
import 'package:grocery_app/src/data/banners.dart';
import 'package:grocery_app/src/data/best_dealProduct.dart';
import 'package:grocery_app/src/data/product_category.dart';
import 'package:grocery_app/src/data/product_details.dart';
import 'package:grocery_app/src/data/wish_list_model.dart';
import 'package:grocery_app/src/logic/repo/product_repo.dart';
import 'package:grocery_app/utils/constants/shared_pref_utils.dart';
@@ -38,6 +39,29 @@ class ProductProvider extends ChangeNotifier {
);
}
ProductDetailsData productDetails = ProductDetailsData();
bool isProductLoading = true;
Future<void> getProduuctDetails(BuildContext context, String id) async {
var data = {};
productDetails = ProductDetailsData();
isProductLoading = true;
notifyListeners();
var result = await _homeRepo.getProductDetails(data, context, id);
return result.fold(
(error) {
isProductLoading = false;
notifyListeners();
},
(response) {
productDetails = response!;
isProductLoading = false;
notifyListeners();
},
);
}
List<BestDeal> bestdeal = [];
bool isBestdealingloading = true;
@@ -132,7 +156,7 @@ class ProductProvider extends ChangeNotifier {
),
);
await SharedPrefUtils.clear();
context.clearAndPush(routePath: MyRoutes.LOGIN);
context.clearAndPush(routePath: MyRoutes.SIGNUP);
return true;
},
@@ -319,6 +343,56 @@ class ProductProvider extends ChangeNotifier {
}
}
List<BestDeal> countList = [];
Future<void> addToWithCart(
BuildContext context, String productId, BestDeal bestdealproduct) async {
//if (cartItems.contains(productId)) return; // Prevent duplicate additions
isLoading[productId] = true;
notifyListeners(); // Notify UI to show loading indicator
var data = {"productId": productId, "quantity": 1};
try {
var result = await _homeRepo.addToCart(data);
result.fold(
(error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(error.message),
backgroundColor: Colors.red,
),
);
},
(response) {
countList.add(bestdealproduct);
cartItems.add(productId); // Add product to cart
Fluttertoast.showToast(
msg: "Added to cart successfully!",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
backgroundColor: Colors.green,
textColor: Colors.white,
fontSize: 14.0,
);
notifyListeners(); // Update UI after adding to cart
},
);
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Something went wrong"),
backgroundColor: Colors.red,
),
);
} finally {
isLoading[productId] = false;
notifyListeners(); // Ensure UI updates after operation
}
}
bool isWishListItemLoadingg = true;
List<WishListItem> wishListItem = [];
@@ -360,8 +434,7 @@ class ProductProvider extends ChangeNotifier {
int get quantity => _quantity;
double get totalPrice => _totalPrice;
void setProductPrice(double price)
{
void setProductPrice(double price) {
_unitPrice = price;
_totalPrice = _unitPrice * _quantity;
notifyListeners();
@@ -406,6 +479,4 @@ class ProductProvider extends ChangeNotifier {
}
///////////////////////////////////////////////////// all carts////////////////////////
}

View File

@@ -5,6 +5,7 @@ import 'package:fpdart/fpdart.dart';
import 'package:grocery_app/src/core/utils/custom_dio_exception.dart';
import 'package:grocery_app/src/core/utils/response_type_def.dart';
import 'package:grocery_app/src/data/OTPResponseModel.dart';
import 'package:grocery_app/src/data/login_response.dart';
import 'package:grocery_app/src/data/registration_response.dart';
import 'package:grocery_app/src/data/vendor_otpModel.dart';
import 'package:grocery_app/src/logic/services/auth_service_locator.dart';
@@ -19,8 +20,7 @@ class AuthRepo {
try {
var response = await _authServices.sendOtp(data);
final String model = response.toString();
// OtpResponseModel otpResponseModel =
// otpResponseModelFromJson(response.toString());
return right(model);
} on DioException catch (e) {
@@ -42,7 +42,7 @@ class AuthRepo {
authToken: vendorOtpModel.data!.accessToken ?? "");
}
// final String model = response.toString();
return right(vendorOtpModel);
} on DioException catch (e) {
@@ -51,6 +51,27 @@ class AuthRepo {
}
}
FutureResult<LoginResponse> loginOtp(data) async {
try {
var response = await _authServices.loginOtp(data);
LoginResponse loginResponse = loginResponseFromJson(response.toString());
if (loginResponse.accessToken != null)
{
await SharedPrefUtils.setToken(
authToken: loginResponse.accessToken ?? "");
}
// final String model = response.toString();
return right(loginResponse);
} on DioException catch (e) {
var error = CustomDioExceptions.handleError(e);
return left(error);
}
}
// FutureResult<LoginResponse> login(data) async {
// try {
// var response = await _authServices.login(data);

View File

@@ -9,8 +9,10 @@ import 'package:grocery_app/src/data/banners.dart';
import 'package:grocery_app/src/data/best_dealProduct.dart';
import 'package:grocery_app/src/data/check_pin_response.dart';
import 'package:grocery_app/src/data/product_category.dart';
import 'package:grocery_app/src/data/product_details.dart';
import 'package:grocery_app/src/data/wish_list_model.dart';
import 'package:grocery_app/src/logic/services/home_locator.dart';
import 'package:grocery_app/src/ui/productdetails/product_details.dart';
class ProductRepo {
final ProductService _productService;
@@ -34,6 +36,24 @@ class ProductRepo {
}
}
FutureResult<ProductDetailsData> getProductDetails(
data, BuildContext context, id) async {
try {
var response = await _productService.getProductDetails(data, id);
ProductDetailsData loginResponse = productDetailsdataFromJson(response.toString());
final String model = response.toString();
return right(loginResponse);
} on DioException catch (e) {
var error = CustomDioExceptions.handleError(e);
return left(error);
}
}
FutureResult<BestDealProduct> getBestDealProduct(
data, BuildContext context) async {
try {
@@ -103,14 +123,26 @@ class ProductRepo {
}
}
FutureResult<CheckPinResponse> checkPin(data,pin) async {
FutureResult<CheckPinResponse> checkPin(data, pin) async {
try {
var response = await _productService.checkPin(data,pin);
CheckPinResponse allCartItems = checkPinResponseFromJson(response.toString());
var response = await _productService.checkPin(data, pin);
CheckPinResponse allCartItems =
checkPinResponseFromJson(response.toString());
return right(allCartItems);
} on DioException catch (e) {
var error = CustomDioExceptions.handleError(e);
return left(error);
}
}
FutureResult<String> deleteItem(data, id) async {
try {
var response = await _productService.deleteItem(data, id);
final String model = response.toString();
return right(model);
} on DioException catch (e) {
var error = CustomDioExceptions.handleError(e);
return left(error);
}

View File

@@ -23,6 +23,12 @@ class AuthServices extends ApiService {
var response = await api.post(APIURL.verifyOtp, data: jsonEncode(data));
return response;
}
Future loginOtp(data) async {
var response = await api.post(APIURL.loginOtp, data: jsonEncode(data));
return response;
}
Future login(data) async
{
var response = await api.post(APIURL.login, data: jsonEncode(data));

View File

@@ -21,16 +21,24 @@ class ProductService extends ApiService {
var response;
if (id.isEmpty) {
response =
await api.get(APIURL.getAllProduct, data: jsonEncode(data));
}
else{
response = await api.get(APIURL.getAllProduct+ id, data: jsonEncode(data));
response = await api.get(APIURL.getAllProduct, data: jsonEncode(data));
} else {
response =
await api.get(APIURL.getAllProduct + id, data: jsonEncode(data));
}
return response;
}
Future getProductDetails(data, id) async {
var response =
await api.get(APIURL.getProductDetails + id, data: jsonEncode(data));
return response;
}
//
Future getBestDealProduct(data) async {
var response =
await api.get(APIURL.getBestDealProduct, data: jsonEncode(data));
@@ -44,55 +52,50 @@ class ProductService extends ApiService {
return response;
}
Future similarProduct(data,id) async {
var response = await api.get(APIURL.similarProduct+id+"/similar", data: jsonEncode(data));
Future similarProduct(data, id) async {
var response = await api.get(APIURL.similarProduct + id + "/similar",
data: jsonEncode(data));
return response;
}
Future getItemCards(data) async {
Future getItemCards(data) async {
var response = await api.get(APIURL.getItemCards, data: jsonEncode(data));
return response;
}
Future checkPin(data,pin) async {
var response = await api.get(APIURL.checkPin+pin, data: jsonEncode(data));
Future checkPin(data, pin) async {
var response = await api.get(APIURL.checkPin + pin, data: jsonEncode(data));
return response;
}
Future deleteItem(data, id) async {
var response =
await api.delete(APIURL.deleteItem + id, data: jsonEncode(data));
return response;
}
Future addToWish(data) async {
Future addToWish(data) async {
var response = await api.post(APIURL.addToWish, data: jsonEncode(data));
return response;
}
Future addToCart(data) async {
Future addToCart(data) async {
var response = await api.post(APIURL.addToCart, data: jsonEncode(data));
return response;
}
Future gettAllWishList(data) async {
var response = await api.get(APIURL.gettAllWishList, data: jsonEncode(data));
Future gettAllWishList(data) async {
var response =
await api.get(APIURL.gettAllWishList, data: jsonEncode(data));
return response;
}
Future getBanners(data) async {
var response = await api.get(APIURL.getBanners, data: jsonEncode(data));