Need to open network image books based on clicked image which are latest,sale and all based on click on grid item. List is working fine for all books but dont know how to display images based on particular filter of sale and latest string constants. Created separate methods for sale but everytime it display all list items cover images on click. Please help.
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:blur/blur.dart';
import 'package:matab/constants/constants.dart';
import 'package:matab/ui/general_widgets/custom_gradient_button.dart';
import 'package:matab/ui/pages/checkout/payment.dart';
import 'package:matab/ui/pages/styles.dart';
import '../../../controllers/book_controller.dart';
import '../../../controllers/cart_book_controller.dart';
import '../../../controllers/cart_magazine_controller.dart';
import '../../../controllers/magazine_controller.dart';
import '../../../controllers/order_controller.dart';
import 'book_attributes.dart';
import 'book_description.dart';
class BookDetailsPage extends StatefulWidget {
final int index;
final String type;
final String cartButtonText;
const BookDetailsPage(
{Key? key,
required this.index,
required this.type,
required this.cartButtonText})
: super(key: key);
@override
State<BookDetailsPage> createState() => _BookDetailsPageState();
}
class _BookDetailsPageState extends State<BookDetailsPage> {
final BookController bookController = Get.find(tag: 'bookController');
final CartBookController cartBookController =
Get.find(tag: 'cartBookController');
final OrderController orderController = Get.find(tag: 'orderController');
bool alreadyExistFlag = false;
@override
Widget build(BuildContext context) {
var cartButtonText = cartBookController.assignTitle(widget.index).obs;
return Scaffold(
backgroundColor: Colors.white,
bottomNavigationBar: SizedBox(
height: 200,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(18.0, 20, 18, 10),
child: CustomGradientButton(
buttonText: "Buy this Book ",
buttonFunction: () => {
orderController.order.bookIDsList = [],
orderController.order.bookCounts = [],
orderController.order.bookCounts.add(1),
orderController.order.totalPrice =
bookController.bookList[widget.index].price,
orderController.order.bookIDsList.add(
bookController.bookList[widget.index].bookID),
Get.to(const Payment(
type: Constants.bookConst, total: 300))
}),
),
Obx(() => Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding: const EdgeInsets.only(bottom: 18.0),
child: TextButton(
onPressed: () => {
cartBookController.addBookToCart(widget.index),
cartButtonText.value =
cartBookController.assignTitle(widget.index),
},
child: Text(
cartButtonText.value,
style: TextStyle(
fontSize: 20.0,
color: mainColor,
fontWeight: FontWeight.bold),
),
),
),
)),
]),
),
appBar: AppBar(
backgroundColor: Colors.transparent,
bottomOpacity: 0.0,
elevation: 0.0,
automaticallyImplyLeading: false,
toolbarHeight: 240,
flexibleSpace: Stack(
children: [
Container(
height: 250,
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
bookController.onSaleList[widget.index].coverImage),
fit: BoxFit.cover,
),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(30, 140, 0, 0),
child: Container(
height: 100,
width: 80,
decoration: BoxDecoration(
borderRadius:
const BorderRadius.all(Radius.circular(12.0)),
border: Border.all(color: Colors.white, width: 4)),
child: Image(
image: NetworkImage(
bookController.bookList[widget.index].coverImage),
fit: BoxFit.cover,
)),
),
Padding(
padding: const EdgeInsets.fromLTRB(10, 65, 0, 0),
child: Container(
height: 40,
width: 40,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.0)),
),
child: Blur(
blur: 1.8,
blurColor: Colors.white,
child: Container(
decoration: const BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(12.0))),
),
),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(4, 62, 0, 0),
child: IconButton(
onPressed: () => {Get.back()},
icon: const ImageIcon(
AssetImage(
"assets/back.png",
),
size: 40,
))),
Padding(
padding: const EdgeInsets.fromLTRB(330, 65, 0, 0),
child: Container(
height: 40,
width: 40,
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.0)),
),
child: Blur(
blur: 1.8,
blurColor: Colors.white,
child: Container(
decoration: const BoxDecoration(
borderRadius:
BorderRadius.all(Radius.circular(12.0))),
),
),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(326, 62, 0, 0),
child: IconButton(
onPressed: () => {},
icon: const ImageIcon(
AssetImage(
"assets/heart.png",
),
size: 40,
)))
],
),
),
body: SingleChildScrollView(
child: Column(
children: [
BookAtrributes(
price: bookController.bookList[widget.index].price,
bookName: bookController.bookList[widget.index].title,
author: bookController.bookList[widget.index].author,
ratings: 3.4,
),
SizedBox(
height: 200,
child: BookDescription(
description:
bookController.bookList[widget.index].description)),
],
),
));
}
}