How to open network image books based on clicked image on a String constant value

Viewed 32

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)),
            ],
          ),
        ));
  }
}
0 Answers
Related