searchbarstatus
This commit is contained in:
@@ -998,7 +998,7 @@
|
|||||||
"languageVersion": "3.4"
|
"languageVersion": "3.4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"generated": "2025-02-24T13:23:19.491834Z",
|
"generated": "2025-02-25T13:35:16.100085Z",
|
||||||
"generator": "pub",
|
"generator": "pub",
|
||||||
"generatorVersion": "3.4.4",
|
"generatorVersion": "3.4.4",
|
||||||
"flutterRoot": "file:///Users/rajeevsingh/Documents/allSoftwares/flutter",
|
"flutterRoot": "file:///Users/rajeevsingh/Documents/allSoftwares/flutter",
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,3 +1,4 @@
|
|||||||
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@@ -109,13 +110,20 @@ class ProductProvider extends ChangeNotifier {
|
|||||||
isHomeLoadingg = true;
|
isHomeLoadingg = true;
|
||||||
|
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
var data = {
|
var data;
|
||||||
"minPrice": "${minPrice}",
|
|
||||||
"minPrice": "${maxprice}",
|
if (maxprice.isNotEmpty) {
|
||||||
"search": search,
|
data = {
|
||||||
"sortBy": orderby
|
"minPrice": "${minPrice}",
|
||||||
};
|
"maxPrice": maxprice,
|
||||||
|
"search": search,
|
||||||
|
"sortBy": orderby
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
data = {"minPrice": "${minPrice}", "search": search, "sortBy": orderby};
|
||||||
|
}
|
||||||
var result = await _homeRepo.getAllProduct(data, context, id);
|
var result = await _homeRepo.getAllProduct(data, context, id);
|
||||||
|
|
||||||
return result.fold(
|
return result.fold(
|
||||||
(error) {
|
(error) {
|
||||||
isLoadingg = false;
|
isLoadingg = false;
|
||||||
@@ -765,4 +773,54 @@ class ProductProvider extends ChangeNotifier {
|
|||||||
print("Error fetching address: $e");
|
print("Error fetching address: $e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<Product> _suggestions = [];
|
||||||
|
Timer? _debounce;
|
||||||
|
|
||||||
|
List<Product> get suggestions => _suggestions;
|
||||||
|
|
||||||
|
/// Debounced Search API Call
|
||||||
|
void searchProducts(String query, BuildContext context) {
|
||||||
|
if (_debounce?.isActive ?? false) _debounce!.cancel();
|
||||||
|
|
||||||
|
_debounce = Timer(const Duration(milliseconds: 500), () async {
|
||||||
|
if (query.isNotEmpty) {
|
||||||
|
_fetchSuggestions(query, context);
|
||||||
|
} else {
|
||||||
|
_suggestions.clear();
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Simulated API Call (Replace with real API)
|
||||||
|
Future<void> _fetchSuggestions(String query, context) async {
|
||||||
|
_suggestions.clear();
|
||||||
|
notifyListeners();
|
||||||
|
var data = {
|
||||||
|
"search": query,
|
||||||
|
"page": 1,
|
||||||
|
"limit": 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
var result = await _homeRepo.getAllProduct(data, context, '');
|
||||||
|
|
||||||
|
return result.fold(
|
||||||
|
(error) {
|
||||||
|
notifyListeners();
|
||||||
|
},
|
||||||
|
(response)
|
||||||
|
{
|
||||||
|
print("lkdfjglkfdglkh ${response.data}");
|
||||||
|
_suggestions.addAll(response.data as Iterable<Product>);
|
||||||
|
|
||||||
|
notifyListeners();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void clearSuggestions() {
|
||||||
|
_suggestions.clear();
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,13 +127,14 @@ class _BestDealScreenState extends State<BestDealScreen> {
|
|||||||
),
|
),
|
||||||
floatingActionButton: floatingAction(),
|
floatingActionButton: floatingAction(),
|
||||||
body: Padding(
|
body: Padding(
|
||||||
padding: const EdgeInsets.only(bottom: 100),
|
padding: const EdgeInsets.only(bottom: 10),
|
||||||
child: itemBestdeal(),
|
child: itemBestdeal(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget floatingAction() {
|
Widget floatingAction() {
|
||||||
return Consumer<ProductProvider>(builder: (context, provider, child) {
|
return Consumer<ProductProvider>(builder: (context, provider, child)
|
||||||
|
{
|
||||||
if (provider.countList.isEmpty) {
|
if (provider.countList.isEmpty) {
|
||||||
return Center();
|
return Center();
|
||||||
} else {
|
} else {
|
||||||
@@ -309,8 +310,8 @@ class _BestDealScreenState extends State<BestDealScreen> {
|
|||||||
MyRoutes.PRODUCTDETAILS,
|
MyRoutes.PRODUCTDETAILS,
|
||||||
extra: {
|
extra: {
|
||||||
"id": bestdealproduct.id,
|
"id": bestdealproduct.id,
|
||||||
"quantity": 0,
|
"quantity": 1,
|
||||||
"price": '0',
|
"price": bestdealproduct.discountPrice,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ class _MycartState extends State<Mycart> {
|
|||||||
MyRoutes.PRODUCTDETAILS,
|
MyRoutes.PRODUCTDETAILS,
|
||||||
extra: {
|
extra: {
|
||||||
"id": bestdealproduct.id,
|
"id": bestdealproduct.id,
|
||||||
"quantity": 0,
|
"quantity": 1,
|
||||||
"price": "0",
|
"price": bestdealproduct.discountPrice,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -170,15 +170,16 @@ class _FavouriteScreenState extends State<FavouriteScreen>
|
|||||||
|
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
context.push(MyRoutes.PRODUCTDETAILS,
|
context.push(
|
||||||
// extra: productId
|
MyRoutes.PRODUCTDETAILS,
|
||||||
|
// extra: productId
|
||||||
|
|
||||||
extra: {
|
extra: {
|
||||||
"id":productId,
|
"id": productId,
|
||||||
"quantity": 0,
|
"quantity": 1,
|
||||||
"price": "0",
|
"price": product.discountPrice,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: EdgeInsets.all(8),
|
padding: EdgeInsets.all(8),
|
||||||
|
|||||||
@@ -187,8 +187,8 @@ class _FruitVeggieDetailState extends State<FruitVeggieDetail> {
|
|||||||
|
|
||||||
extra: {
|
extra: {
|
||||||
"id": product.id,
|
"id": product.id,
|
||||||
"quantity": 0,
|
"quantity": 1,
|
||||||
"price": "0",
|
"price": product.discountPrice,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -54,6 +54,73 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
APPSTRING.userLastName = (await SharedPrefUtils.getLastName())!;
|
APPSTRING.userLastName = (await SharedPrefUtils.getLastName())!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final TextEditingController _searchController = TextEditingController();
|
||||||
|
OverlayEntry? _overlayEntry;
|
||||||
|
final LayerLink _layerLink = LayerLink();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_searchController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _showOverlay(BuildContext context) {
|
||||||
|
_clearOverlay();
|
||||||
|
_overlayEntry = _createOverlayEntry(context);
|
||||||
|
Overlay.of(context).insert(_overlayEntry!);
|
||||||
|
}
|
||||||
|
|
||||||
|
OverlayEntry _createOverlayEntry(BuildContext context) {
|
||||||
|
final searchProvider = Provider.of<ProductProvider>(context, listen: false);
|
||||||
|
RenderBox renderBox = context.findRenderObject() as RenderBox;
|
||||||
|
Size size = renderBox.size;
|
||||||
|
|
||||||
|
return OverlayEntry(
|
||||||
|
builder: (context) => Positioned(
|
||||||
|
width: size.width,
|
||||||
|
child: CompositedTransformFollower(
|
||||||
|
link: _layerLink,
|
||||||
|
offset: Offset(0, size.height + 5),
|
||||||
|
child: Material(
|
||||||
|
elevation: 4.0,
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
child: ListView(
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
shrinkWrap: true,
|
||||||
|
children: searchProvider.suggestions.map((suggestion) {
|
||||||
|
return ListTile(
|
||||||
|
title: Row(
|
||||||
|
children: [
|
||||||
|
AppNetworkImage(
|
||||||
|
height: 25,
|
||||||
|
width: 25,
|
||||||
|
imageUrl: suggestion.productImages!.first.url,
|
||||||
|
backGroundColor: APPCOLOR.bgGrey,
|
||||||
|
radius: 10,
|
||||||
|
),
|
||||||
|
Text(suggestion.name),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
_searchController.text = suggestion.name;
|
||||||
|
searchProvider.getHomeProduct(
|
||||||
|
context, "", suggestion.name, '', '', '');
|
||||||
|
_clearOverlay();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _clearOverlay() {
|
||||||
|
_overlayEntry?.remove();
|
||||||
|
_overlayEntry = null;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return SafeArea(
|
return SafeArea(
|
||||||
@@ -69,44 +136,60 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 15,
|
height: 15,
|
||||||
),
|
),
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Consumer<ProductProvider>(
|
Expanded(
|
||||||
builder: (context, provider, child) {
|
// ✅ Move Expanded Here
|
||||||
return Expanded(
|
child: Consumer<ProductProvider>(
|
||||||
child: Container(
|
builder: (context, provider, child) {
|
||||||
height: 50,
|
return CompositedTransformTarget(
|
||||||
decoration: BoxDecoration(
|
link: _layerLink,
|
||||||
color: APPCOLOR.bgGrey,
|
child: Container(
|
||||||
borderRadius: BorderRadius.circular(5),
|
height: 50,
|
||||||
),
|
decoration: BoxDecoration(
|
||||||
child: TextFormField(
|
color: APPCOLOR.bgGrey,
|
||||||
onChanged: (value) {
|
borderRadius: BorderRadius.circular(5),
|
||||||
provider.searchValue = value;
|
),
|
||||||
},
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
controller: _searchController,
|
||||||
border: InputBorder.none,
|
onChanged: (value) {
|
||||||
fillColor: Colors.transparent,
|
provider.searchProducts(value, context);
|
||||||
suffixIcon: InkWell(
|
|
||||||
|
if (value.isNotEmpty) {
|
||||||
|
_showOverlay(context);
|
||||||
|
} else {
|
||||||
|
_clearOverlay();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: InputBorder.none,
|
||||||
|
fillColor: Colors.transparent,
|
||||||
|
suffixIcon: InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
print(
|
||||||
|
"klfklhjklfklhg ${_searchController.text}");
|
||||||
|
|
||||||
provider.getHomeProduct(context, "",
|
provider.getHomeProduct(context, "",
|
||||||
provider.searchValue, '', '', '');
|
_searchController.text, '', '', '');
|
||||||
},
|
},
|
||||||
child: Icon(MdiIcons.magnify)),
|
child: Icon(MdiIcons.magnify),
|
||||||
hintText: 'Search',
|
),
|
||||||
hintStyle: context.customRegular(
|
hintText: 'Search',
|
||||||
APPCOLOR.grey666666, 18),
|
hintStyle: context.customRegular(
|
||||||
isCollapsed: true,
|
APPCOLOR.grey666666, 18),
|
||||||
contentPadding: const EdgeInsets.symmetric(
|
isCollapsed: true,
|
||||||
vertical: 10, horizontal: 10),
|
contentPadding: const EdgeInsets.symmetric(
|
||||||
|
vertical: 10,
|
||||||
|
horizontal: 10,
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
);
|
||||||
);
|
}),
|
||||||
}),
|
|
||||||
const SizedBox(
|
|
||||||
width: 10,
|
|
||||||
),
|
),
|
||||||
|
const SizedBox(width: 10),
|
||||||
InkWell(
|
InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showSortBottomSheet(context);
|
showSortBottomSheet(context);
|
||||||
@@ -128,6 +211,83 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// Row(
|
||||||
|
// children: [
|
||||||
|
// Consumer<ProductProvider>(
|
||||||
|
// builder: (context, provider, child)
|
||||||
|
// {
|
||||||
|
// return
|
||||||
|
// CompositedTransformTarget(
|
||||||
|
// link: _layerLink,
|
||||||
|
// child: Expanded(
|
||||||
|
// child: Container(
|
||||||
|
// height: 50,
|
||||||
|
// decoration: BoxDecoration(
|
||||||
|
// color: APPCOLOR.bgGrey,
|
||||||
|
// borderRadius: BorderRadius.circular(5),
|
||||||
|
// ),
|
||||||
|
// child: TextFormField(
|
||||||
|
// controller: _searchController,
|
||||||
|
// onChanged: (value) {
|
||||||
|
|
||||||
|
// provider.searchProducts(value);
|
||||||
|
// if (value.isNotEmpty) {
|
||||||
|
// _showOverlay(context);
|
||||||
|
// } else {
|
||||||
|
// _clearOverlay();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // provider.searchValue = value;
|
||||||
|
|
||||||
|
// },
|
||||||
|
// decoration: InputDecoration(
|
||||||
|
// border: InputBorder.none,
|
||||||
|
// fillColor: Colors.transparent,
|
||||||
|
// suffixIcon: InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// provider.getHomeProduct(context, "",
|
||||||
|
// provider.searchValue, '', '', '');
|
||||||
|
// },
|
||||||
|
// child: Icon(MdiIcons.magnify)),
|
||||||
|
// hintText: 'Search',
|
||||||
|
// hintStyle: context.customRegular(
|
||||||
|
// APPCOLOR.grey666666, 18),
|
||||||
|
// isCollapsed: true,
|
||||||
|
// contentPadding: const EdgeInsets.symmetric(
|
||||||
|
// vertical: 10, horizontal: 10),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// }),
|
||||||
|
|
||||||
|
// const SizedBox(
|
||||||
|
// width: 10,
|
||||||
|
// ),
|
||||||
|
// InkWell(
|
||||||
|
// onTap: () {
|
||||||
|
// showSortBottomSheet(context);
|
||||||
|
// },
|
||||||
|
// child: Container(
|
||||||
|
// height: 50,
|
||||||
|
// width: 50,
|
||||||
|
// decoration: BoxDecoration(
|
||||||
|
// color: APPCOLOR.lightGreen,
|
||||||
|
// borderRadius: BorderRadius.circular(5),
|
||||||
|
// ),
|
||||||
|
// child: Center(
|
||||||
|
// child: Icon(
|
||||||
|
// MdiIcons.tuneVariant,
|
||||||
|
// color: Colors.white,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 15,
|
height: 15,
|
||||||
),
|
),
|
||||||
@@ -311,8 +471,8 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
|
|
||||||
extra: {
|
extra: {
|
||||||
"id": bestdealproduct.id,
|
"id": bestdealproduct.id,
|
||||||
"quantity": 0,
|
"quantity": 1,
|
||||||
"price": "0",
|
"price": bestdealproduct.discountPrice,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -694,12 +854,10 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
context.push(
|
context.push(
|
||||||
MyRoutes.PRODUCTDETAILS,
|
MyRoutes.PRODUCTDETAILS,
|
||||||
// extra: product.id
|
|
||||||
|
|
||||||
extra: {
|
extra: {
|
||||||
"id": product.id,
|
"id": product.id,
|
||||||
"quantity": 0,
|
"quantity": 1,
|
||||||
"price": "0",
|
"price": product.discountPrice,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -795,6 +953,8 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
provider.getHomeProduct(context, '', '', "", "", "popularity");
|
provider.getHomeProduct(context, '', '', "", "", "popularity");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
// t(BuildContext context, String id, String search,
|
||||||
|
// String minPrice, String maxprice, orderby)
|
||||||
provider.getHomeProduct(context, '', '', "100", "100000000", '');
|
provider.getHomeProduct(context, '', '', "100", "100000000", '');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -113,11 +113,7 @@ class _ProductDetailsState extends State<ProductDetails> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int calculateDiscountPercentage(double basePrice, double discountPrice) {
|
int calculateDiscountPercentage(double basePrice, double discountPrice) {
|
||||||
print(
|
|
||||||
"Base Price (Before Discount): $basePrice, Discount Price (After Discount): $discountPrice");
|
|
||||||
|
|
||||||
if (basePrice <= 0 || discountPrice <= 0 || discountPrice > basePrice) {
|
if (basePrice <= 0 || discountPrice <= 0 || discountPrice > basePrice) {
|
||||||
print("Error: Invalid price values.");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,8 +147,15 @@ class _ProductDetailsState extends State<ProductDetails> {
|
|||||||
itemBuilder: (context, index, realIndex) {
|
itemBuilder: (context, index, realIndex) {
|
||||||
var productImage =
|
var productImage =
|
||||||
provider.productDetails.data!.productImages![index];
|
provider.productDetails.data!.productImages![index];
|
||||||
return Image.network(productImage.url ??
|
return AppNetworkImage(
|
||||||
'https://i.pinimg.com/originals/a5/f3/5f/a5f35fb23e942809da3df91b23718e8d.png');
|
height: MediaQuery.of(context).size.height * 0.08,
|
||||||
|
width: 2000,
|
||||||
|
imageUrl: productImage.url,
|
||||||
|
backGroundColor: Colors.transparent,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Image.network(productImage.url ??
|
||||||
|
// 'https://i.pinimg.com/originals/a5/f3/5f/a5f35fb23e942809da3df91b23718e8d.png');
|
||||||
},
|
},
|
||||||
options: CarouselOptions(
|
options: CarouselOptions(
|
||||||
height: 300,
|
height: 300,
|
||||||
@@ -356,27 +359,29 @@ class _ProductDetailsState extends State<ProductDetails> {
|
|||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
AnimatedSize(
|
if (provider.productDetails.data!.productHighlight!
|
||||||
duration: Duration(milliseconds: 300),
|
.isNotEmpty)
|
||||||
curve: Curves.easeInOut,
|
AnimatedSize(
|
||||||
child: Padding(
|
duration: Duration(milliseconds: 300),
|
||||||
padding: const EdgeInsets.all(8.0),
|
curve: Curves.easeInOut,
|
||||||
child: ListView.builder(
|
child: Padding(
|
||||||
shrinkWrap: true,
|
padding: const EdgeInsets.all(8.0),
|
||||||
physics: NeverScrollableScrollPhysics(),
|
child: ListView.builder(
|
||||||
itemCount: isHilightsExpanded
|
shrinkWrap: true,
|
||||||
? provider.productDetails.data!
|
physics: NeverScrollableScrollPhysics(),
|
||||||
.productHighlight!.length
|
itemCount: isHilightsExpanded
|
||||||
: 2,
|
? provider.productDetails.data!
|
||||||
itemBuilder: (context, index) {
|
.productHighlight!.length
|
||||||
final item = provider.productDetails.data!
|
: 1,
|
||||||
.productHighlight![index];
|
itemBuilder: (context, index) {
|
||||||
return _buildText(
|
final item = provider.productDetails.data!
|
||||||
item.key ?? '', item.value ?? '');
|
.productHighlight![index];
|
||||||
},
|
return _buildText(
|
||||||
|
item.key ?? '', item.value ?? '');
|
||||||
|
},
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
Center(
|
Center(
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
@@ -553,16 +558,16 @@ class _ProductDetailsState extends State<ProductDetails> {
|
|||||||
SizedBox(height: 20),
|
SizedBox(height: 20),
|
||||||
|
|
||||||
// Know More Link
|
// Know More Link
|
||||||
InkWell(
|
// InkWell(
|
||||||
onTap: () {
|
// onTap: () {
|
||||||
// Handle navigation to more details
|
// // Handle navigation to more details
|
||||||
},
|
// },
|
||||||
child: Text(
|
// child: Text(
|
||||||
"Know More",
|
// "Know More",
|
||||||
style: TextStyle(
|
// style: TextStyle(
|
||||||
color: Colors.blue, fontWeight: FontWeight.bold),
|
// color: Colors.blue, fontWeight: FontWeight.bold),
|
||||||
),
|
// ),
|
||||||
),
|
// ),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -1252,7 +1257,7 @@ class _ProductDetailsState extends State<ProductDetails> {
|
|||||||
: Text(
|
: Text(
|
||||||
'Add to Cart',
|
'Add to Cart',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 20,
|
fontSize: 18,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: Colors.white),
|
color: Colors.white),
|
||||||
),
|
),
|
||||||
@@ -1264,7 +1269,7 @@ class _ProductDetailsState extends State<ProductDetails> {
|
|||||||
Text(
|
Text(
|
||||||
"₹${cartProvider.totalPrice}",
|
"₹${cartProvider.totalPrice}",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 25,
|
fontSize: 18,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: Colors.white),
|
color: Colors.white),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user