Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
84 kB
2
Indexable
Never
import 'dart:developer';
import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:royalmart/Auth/signin.dart';
import 'package:royalmart/constant/cart_constant.dart';
import 'package:royalmart/dbhelper/database_helper.dart';
import 'package:royalmart/grocery/General/AppConstant.dart';
import 'package:royalmart/grocery/dbhelper/CarrtDbhelper.dart';
import 'package:royalmart/grocery/dbhelper/database_helper.dart' as groc;
import 'package:royalmart/grocery/model/CategaryModal.dart';
import 'package:royalmart/grocery/model/productmodel.dart';
import 'package:royalmart/grocery/screen/detailpage.dart';
import 'package:royalmart/grocery/screen/secondtabview.dart';
import 'package:shared_preferences/shared_preferences.dart';

class NewCategory extends StatefulWidget {
  final String id;
  NewCategory(this.id);

  @override
  _NewCategoryState createState() => _NewCategoryState();
}

class _NewCategoryState extends State<NewCategory> {
  List<Categary> cat_list = [];
  List<Categary> sub_cat_list = [];
  bool flag = false;
  int _selectedIndex = 0;
  int grid = -1;
  String id;
  String id2;
  List<Products> products1 = List();
  List<Categary> list1 = List();
  double sgst1, cgst1, dicountValue, admindiscountprice;
  double mrp, totalmrp = 000;
  void initState() {
    super.initState();
    groc.getData("0").then((usersFromServe) {
      setState(() {
        list1 = usersFromServe;
        id2 = list1[0].pcatId;
        log(" =======>>$id2");
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        // drawer is open then first close it
        // if (_scaffoldKey.currentState.isDrawerOpen) {
        //Navigator.of(context).pop();
        //return false;
        //} else {
        await showDialog<bool>(
            context: context,
            builder: (c) => AlertDialog(
                  title: Text('Warning'),
                  content: Text('Do you really want to exit'),
                  actions: [
                    FlatButton(
                      child: Text('Yes'),
                      onPressed: () => {
                        exit(0),
                      },
                    ),
                    FlatButton(
                      child: Text('No'),
                      onPressed: () => Navigator.pop(c),
                    ),
                  ],
                ));
        //}
        // we can now close the app.
        // return true;
      },
      child: Scaffold(
        backgroundColor: GroceryAppColors.backgoundColor2,
        body: Container(
          margin: EdgeInsets.only(top: 5),
          child: Row(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Container(
                width: 90,
                color: Color(0xfff3f5f5),
                height: MediaQuery.of(context).size.height,
                child: FutureBuilder(
                    future: groc.getData("0"),
                    builder: (context, snapshot) {
                      if (snapshot.hasData) {
                        return Container(
                          child: ListView.builder(
                            shrinkWrap: true,
                            scrollDirection: Axis.vertical,
                            itemBuilder: (context, index) {
                              Categary item = snapshot.data[index];
                              return InkWell(
                                onTap: () {
                                  if (grid != index) {
                                    GridShowColor(index);

                                    setState(() {
                                      _selectedIndex = index;
                                      products1 = [];
                                      grid = index;
                                      id = item.pcatId;
                                      id2 = item.pcatId;
                                    });
                                    // loadData(cat_list[index].pcatId);
                                  } else {
                                    setState(() {
                                      grid = -1;
                                      _selectedIndex = index;
                                      // loadData(cat_list[index].pcatId);
                                    });
                                  }
                                },
                                child: Container(
                                  decoration: BoxDecoration(
                                    color: _selectedIndex == index
                                        ? Colors.white
                                        : Colors.white,
                                  ),
                                  padding: EdgeInsets.only(left: 5),
                                  margin: EdgeInsets.only(left: 3),
                                  child: Row(
                                    children: [
                                      Container(
                                          width: 75,
                                          child: Column(
                                            children: [
                                              Stack(children: [
                                                Container(
                                                  margin:
                                                      EdgeInsets.only(top: 5),
                                                  decoration: BoxDecoration(
                                                    // border: Border.all(
                                                    //     color: GroceryAppColors.tela,
                                                    //     width: 2),
                                                    borderRadius:
                                                        BorderRadius.circular(
                                                            20),
                                                  ),
                                                  child: CircleAvatar(
                                                    radius: 25,
                                                    backgroundColor:
                                                        Colors.white,
                                                    child: ClipOval(
                                                      child: new SizedBox(
                                                        width: 40.0,
                                                        height: 40.0,
                                                        child: item.img.length >
                                                                0
                                                            ? Image.network(
                                                                GroceryAppConstant
                                                                        .base_url +
                                                                    "manage/uploads/p_category/" +
                                                                    item.img,
                                                                fit:
                                                                    BoxFit.fill)
                                                            : Image.asset(
                                                                "assets/images/logo.png"),
                                                      ),
                                                    ),
                                                  ),
                                                ),
                                                Container(
                                                  margin:
                                                      EdgeInsets.only(top: 5),
                                                  decoration: BoxDecoration(
                                                    borderRadius:
                                                        BorderRadius.circular(
                                                            20),
                                                  ),
                                                  child: CircleAvatar(
                                                    radius: 25,
                                                    backgroundColor:
                                                        GroceryAppColors
                                                            .colorBackground
                                                            .withOpacity(0.24),
                                                  ),
                                                ),
                                              ]),
                                              Container(
                                                  alignment: Alignment.center,
                                                  height: 50,
                                                  child: Text(
                                                    item.pCats,
                                                    maxLines: 2,
                                                    overflow:
                                                        TextOverflow.ellipsis,
                                                    textAlign: TextAlign.center,
                                                    style: TextStyle(
                                                        color: Colors.black,
                                                        fontWeight:
                                                            _selectedIndex ==
                                                                    index
                                                                ? FontWeight
                                                                    .bold
                                                                : FontWeight
                                                                    .normal,
                                                        fontSize: 13),
                                                  )),
                                            ],
                                          )),
                                      _selectedIndex == index
                                          ? Container(
                                              decoration: BoxDecoration(
                                                borderRadius: BorderRadius.only(
                                                    topLeft:
                                                        Radius.circular(10),
                                                    bottomLeft:
                                                        Radius.circular(10)),
                                                color: GroceryAppColors.tela,
                                              ),
                                              height: 100,
                                              width: 6,
                                            )
                                          : Row()
                                    ],
                                  ),
                                ),
                              );
                            },
                            itemCount: snapshot.data.length == null
                                ? 0
                                : snapshot.data.length,
                          ),
                        );
                      }
                      return Container(
                        child: ListView.builder(
                          shrinkWrap: true,
                          scrollDirection: Axis.vertical,
                          itemBuilder: (context, index) {
                            return Container(
                              height: 85,
                              decoration: BoxDecoration(
                                color: _selectedIndex == index
                                    ? Colors.white
                                    : Colors.white,
                              ),
                              padding: EdgeInsets.only(left: 5),
                              margin: EdgeInsets.only(left: 3),
                              child: Row(
                                children: [
                                  Container(
                                      width: 75,
                                      child: Column(
                                        children: [
                                          Stack(children: [
                                            Container(
                                              margin: EdgeInsets.only(top: 5),
                                              decoration: BoxDecoration(
                                                borderRadius:
                                                    BorderRadius.circular(20),
                                              ),
                                              child: CircleAvatar(
                                                radius: 25,
                                                backgroundColor: Colors.white,
                                                child: ClipOval(
                                                  child: new SizedBox(
                                                    width: 40.0,
                                                    height: 40.0,
                                                  ),
                                                ),
                                              ),
                                            ),
                                            Container(
                                              margin: EdgeInsets.only(top: 5),
                                              decoration: BoxDecoration(
                                                borderRadius:
                                                    BorderRadius.circular(20),
                                              ),
                                              child: CircleAvatar(
                                                radius: 25,
                                                backgroundColor:
                                                    GroceryAppColors
                                                        .colorBackground
                                                        .withOpacity(0.24),
                                              ),
                                            ),
                                          ]),
                                        ],
                                      )),
                                  _selectedIndex == index
                                      ? Container(
                                          decoration: BoxDecoration(
                                            borderRadius: BorderRadius.only(
                                                topLeft: Radius.circular(10),
                                                bottomLeft:
                                                    Radius.circular(10)),
                                            color: GroceryAppColors.tela,
                                          ),
                                          height: 100,
                                          width: 6,
                                        )
                                      : Row()
                                ],
                              ),
                            );
                          },
                          itemCount: 10,
                        ),
                      );
                      // Center(child: CircularProgressIndicator());
                    }),
              ),
              grid == _selectedIndex
                  ? Expanded(
                      child: Container(
                          child: FutureBuilder(
                              future: groc.catby_productData1(id, "0"),
                              builder: (context, snapshot) {
                                print(id + "pcatid");
                                var datanew = snapshot.data;
                                if (snapshot.hasData) {
                                  return snapshot.data == null
                                      ? shimmer()
                                      // Center(
                                      //     child: CircularProgressIndicator())
                                      : Padding(
                                          padding: const EdgeInsets.symmetric(
                                              horizontal: 4),
                                          child: GridView.builder(
                                              physics: BouncingScrollPhysics(),
                                              gridDelegate:
                                                  SliverGridDelegateWithFixedCrossAxisCount(
                                                mainAxisSpacing: 0,
                                                crossAxisSpacing: 0,
                                                crossAxisCount: 2,
                                                mainAxisExtent: 250,
                                              ),
                                              itemCount: datanew.length,
                                              itemBuilder: (context, index) {
                                                var data = datanew[index];
                                                return data.img.length > 0
                                                    ? Container(
                                                        decoration:
                                                            BoxDecoration(
                                                          color: GroceryAppColors
                                                              .backgoundColor2,
                                                          // border: Border.all(
                                                          //     width: 0.8,
                                                          //     color: Colors.grey[300])
                                                        ),
                                                        // color: Colors.white,
                                                        // width: 155,
                                                        // margin:
                                                        //     EdgeInsets.only(right: 12, bottom: 8),
                                                        child: Card(
                                                          shape:
                                                              RoundedRectangleBorder(
                                                            borderRadius:
                                                                BorderRadius
                                                                    .circular(
                                                                        10),
                                                          ),
                                                          elevation: 0,
                                                          child: Column(
                                                            children: <Widget>[
                                                              InkWell(
                                                                onTap: () {
                                                                  Navigator
                                                                      .push(
                                                                    context,
                                                                    MaterialPageRoute(
                                                                        builder:
                                                                            (context) =>
                                                                                ProductDetails(data,data.unit_type)),
                                                                  );
                                                                },
                                                                child: Column(
                                                                  crossAxisAlignment:
                                                                      CrossAxisAlignment
                                                                          .start,
                                                                  children: <
                                                                      Widget>[
                                                                    SizedBox(
                                                                      height:
                                                                          120,
                                                                      // width: 130,
                                                                      child:
                                                                          ClipRRect(
                                                                        borderRadius:
                                                                            BorderRadius.only(
                                                                          topLeft:
                                                                              Radius.circular(10),
                                                                          topRight:
                                                                              Radius.circular(10),
                                                                        ),
                                                                        child:
                                                                            CachedNetworkImage(
                                                                          fit: BoxFit
                                                                              .fill,
                                                                          imageUrl:
                                                                              GroceryAppConstant.Product_Imageurl + data.img,
                                                                          placeholder: (context, url) =>
                                                                              Center(child: CircularProgressIndicator()),
                                                                          errorWidget: (context, url, error) =>
                                                                              new Icon(Icons.error),
                                                                        ),
                                                                      ),
                                                                    ),
                                                                  ],
                                                                ),
                                                              ),
                                                              Expanded(
                                                                child:
                                                                    Container(
                                                                  margin: EdgeInsets
                                                                      .only(
                                                                          left:
                                                                              5,
                                                                          right:
                                                                              2,
                                                                          top:
                                                                              5),
                                                                  padding: EdgeInsets
                                                                      .only(
                                                                          left:
                                                                              3,
                                                                          right:
                                                                              5),
                                                                  decoration:
                                                                      BoxDecoration(
                                                                          color: GroceryAppColors
                                                                              .white,
                                                                          borderRadius:
                                                                              BorderRadius.only(
                                                                            bottomLeft:
                                                                                Radius.circular(10),
                                                                            bottomRight:
                                                                                Radius.circular(10),
                                                                          )),
                                                                  child: Column(
                                                                    crossAxisAlignment:
                                                                        CrossAxisAlignment
                                                                            .start,
                                                                    children: <
                                                                        Widget>[
                                                                      Padding(
                                                                        padding:
                                                                            const EdgeInsets.only(top: 8.0),
                                                                        child:
                                                                            Text(
                                                                          data.productName,
                                                                          overflow:
                                                                              TextOverflow.ellipsis,
                                                                          maxLines:
                                                                              2,
                                                                          style: TextStyle(
                                                                              fontSize: 14,
                                                                              color: GroceryAppColors.black,
                                                                              fontWeight: FontWeight.bold),
                                                                        ),
                                                                      ),
                                                                      SizedBox(
                                                                        height:
                                                                            4,
                                                                      ),
                                                                      Text(
                                                                        data.unit_type,
                                                                        overflow:
                                                                            TextOverflow.ellipsis,
                                                                        maxLines:
                                                                            2,
                                                                        style: TextStyle(
                                                                            fontSize:
                                                                                12,
                                                                            color:
                                                                                GroceryAppColors.black,
                                                                            fontWeight: FontWeight.w600),
                                                                      ),
                                                                      Row(
                                                                        mainAxisAlignment:
                                                                            MainAxisAlignment.spaceBetween,
                                                                        crossAxisAlignment:
                                                                            CrossAxisAlignment.start,
                                                                        children: [
                                                                          Padding(
                                                                            padding:
                                                                                const EdgeInsets.only(top: 12.0),
                                                                            child:
                                                                                Column(
                                                                              mainAxisAlignment: MainAxisAlignment.start,
                                                                              crossAxisAlignment: CrossAxisAlignment.start,
                                                                              children: [
                                                                                Text(
                                                                                  '\u{20B9} ${data.buyPrice}',
                                                                                  overflow: TextOverflow.ellipsis,
                                                                                  maxLines: 2,
                                                                                  style: TextStyle(fontSize: 12, color: Colors.grey, decoration: TextDecoration.lineThrough),
                                                                                ),
                                                                                Padding(
                                                                                  padding: const EdgeInsets.only(top: 0.0, bottom: 6),
                                                                                  child: Text('\u{20B9} ${calDiscount(data.buyPrice, data.discount)}', style: TextStyle(color: GroceryAppColors.black, fontWeight: FontWeight.bold, fontSize: 14)),
                                                                                ),
                                                                              ],
                                                                            ),
                                                                          ),
                                                                          Padding(
                                                                            padding:
                                                                                const EdgeInsets.only(right: 2.0, top: 20),
                                                                            child:
                                                                                InkWell(
                                                                              onTap: () async {
                                                                                SharedPreferences pref = await SharedPreferences.getInstance();
                                                                                String mv = pref.getString(
                                                                                  "mvid",
                                                                                );
                                                                                if (GroceryAppConstant.isLogin) {
                                                                                  pref.setString("mvid", data.mv);
                                                                                  print(pref.getString("mvid"));

                                                                                  String mrp_price = calDiscount(data.buyPrice, data.discount);
                                                                                  totalmrp = double.parse(mrp_price);

                                                                                  double dicountValue = double.parse(data.buyPrice) - totalmrp;
                                                                                  String gst_sgst = calGst(mrp_price, data.sgst);
                                                                                  String gst_cgst = calGst(mrp_price, data.cgst);

                                                                                  String adiscount = calDiscount(data.buyPrice, data.msrp != null ? data.msrp : "0");

                                                                                  admindiscountprice = (double.parse(data.buyPrice) - double.parse(adiscount));

                                                                                  String color = "";
                                                                                  String size = "";

                                                                                  // String mv=  pref.getString("mvid",);

                                                                                  _addToproducts1(data.productIs, data.productName, data.img, int.parse(mrp_price), int.parse(data.count), color, size, data.productDescription, gst_sgst, gst_cgst, data.discount, dicountValue.toString(), data.APMC, admindiscountprice.toString(), data.buyPrice, data.shipping, data.quantityInStock, data.youtube, data.mv);
                                                                                  setState(() {});
                                                                                } else {
                                                                                  Navigator.push(
                                                                                    context,
                                                                                    MaterialPageRoute(builder: (context) => SignInPage()),
                                                                                  );
                                                                                }
                                                                              },
                                                                              child: Container(
                                                                                decoration: BoxDecoration(
                                                                                    color: GroceryAppColors.tela.withOpacity(0.1),
                                                                                    borderRadius: BorderRadius.circular(6),
                                                                                    border: Border.all(
                                                                                      color: GroceryAppColors.tela,
                                                                                      width: 1,
                                                                                    )),
                                                                                height: 24,
                                                                                width: 64,
                                                                                child: Center(
                                                                                  child: Text(
                                                                                    "Add",
                                                                                    style: TextStyle(fontSize: 14, color: GroceryAppColors.tela),
                                                                                  ),
                                                                                ),
                                                                              ),
                                                                              //     Container(
                                                                              //   height: 40,
                                                                              //   width: 40,
                                                                              //   child: Card(
                                                                              //     elevation:
                                                                              //         5,
                                                                              //     shape:
                                                                              //         RoundedRectangleBorder(
                                                                              //       borderRadius:
                                                                              //           BorderRadius.circular(
                                                                              //               5),
                                                                              //     ),
                                                                              //     child: Icon(
                                                                              //       Icons.add,
                                                                              //       color: GroceryAppColors
                                                                              //           .tela,
                                                                              //     ),
                                                                              //   ),
                                                                              // ),
                                                                            ),
                                                                          )
                                                                        ],
                                                                      ),
                                                                    ],
                                                                  ),
                                                                ),
                                                              ),
                                                            ],
                                                          ),
                                                        ),
                                                      )
                                                    : Image.asset(
                                                        "assets/images/logo.png",
                                                        height: 35,
                                                        width: 35,
                                                      );
                                              }),
                                        );
                                } else {
                                  Center(
                                    child: Text('Products not available'),
                                  );
                                }
                                return shimmer();
                                // Center(
                                //   child: CircularProgressIndicator(),
                                // );
                              })))
                  : Expanded(
                      child: Container(
                          child: FutureBuilder(
                              future: groc.catby_productData1(id2, "0"),
                              builder: (context, snapshot) {
                                // print(id + "pcatid");
                                var datanew = snapshot.data;
                                if (snapshot.hasData) {
                                  return snapshot.data == null
                                      ? shimmer()
                                      
                                      : Padding(
                                          padding: const EdgeInsets.symmetric(
                                              horizontal: 4),
                                          child: GridView.builder(
                                              physics: BouncingScrollPhysics(),
                                              gridDelegate:
                                                  SliverGridDelegateWithFixedCrossAxisCount(
                                                mainAxisSpacing: 0,
                                                crossAxisSpacing: 0,
                                                crossAxisCount: 2,
                                                mainAxisExtent: 250,
                                              ),
                                              itemCount: datanew.length,
                                              itemBuilder: (context, index) {
                                                var data = datanew[index];
                                                return data.img.length > 0
                                                    ? Container(
                                                        decoration:
                                                            BoxDecoration(
                                                          color: GroceryAppColors
                                                              .backgoundColor2,
                                                          // border: Border.all(
                                                          //     width: 0.8,
                                                          //     color: Colors.grey[300])
                                                        ),
                                                        // color: Colors.white,
                                                        // width: 155,
                                                        // margin:
                                                        //     EdgeInsets.only(right: 12, bottom: 8),
                                                        child: Card(
                                                          shape:
                                                              RoundedRectangleBorder(
                                                            borderRadius:
                                                                BorderRadius
                                                                    .circular(
                                                                        10),
                                                          ),
                                                          elevation: 0,
                                                          child: Column(
                                                            children: <Widget>[
                                                              InkWell(
                                                                onTap: () {
                                                                  Navigator
                                                                      .push(
                                                                    context,
                                                                    MaterialPageRoute(
                                                                        builder:
                                                                            (context) =>
                                                                                ProductDetails(data,data.unit_type)),
                                                                  );
                                                                },
                                                                child: Column(
                                                                  crossAxisAlignment:
                                                                      CrossAxisAlignment
                                                                          .start,
                                                                  children: <
                                                                      Widget>[
                                                                    SizedBox(
                                                                      height:
                                                                          120,
                                                                      // width: 130,
                                                                      child:
                                                                          ClipRRect(
                                                                        borderRadius:
                                                                            BorderRadius.only(
                                                                          topLeft:
                                                                              Radius.circular(10),
                                                                          topRight:
                                                                              Radius.circular(10),
                                                                        ),
                                                                        child:
                                                                            CachedNetworkImage(
                                                                          fit: BoxFit
                                                                              .fill,
                                                                          imageUrl:
                                                                              GroceryAppConstant.Product_Imageurl + data.img,
                                                                          placeholder: (context, url) =>
                                                                              Center(child: CircularProgressIndicator()),
                                                                          errorWidget: (context, url, error) =>
                                                                              new Icon(Icons.error),
                                                                        ),
                                                                      ),
                                                                    ),
                                                                  ],
                                                                ),
                                                              ),
                                                              Expanded(
                                                                child:
                                                                    Container(
                                                                  margin: EdgeInsets
                                                                      .only(
                                                                          left:
                                                                              5,
                                                                          right:
                                                                              2,
                                                                          top:
                                                                              5),
                                                                  padding: EdgeInsets
                                                                      .only(
                                                                          left:
                                                                              3,
                                                                          right:
                                                                              5),
                                                                  decoration:
                                                                      BoxDecoration(
                                                                          color: GroceryAppColors
                                                                              .white,
                                                                          borderRadius:
                                                                              BorderRadius.only(
                                                                            bottomLeft:
                                                                                Radius.circular(10),
                                                                            bottomRight:
                                                                                Radius.circular(10),
                                                                          )),
                                                                  child: Column(
                                                                    crossAxisAlignment:
                                                                        CrossAxisAlignment
                                                                            .start,
                                                                    children: <
                                                                        Widget>[
                                                                      Padding(
                                                                        padding:
                                                                            const EdgeInsets.only(top: 8.0),
                                                                        child:
                                                                            Text(
                                                                          data.productName,
                                                                          overflow:
                                                                              TextOverflow.ellipsis,
                                                                          maxLines:
                                                                              2,
                                                                          style: TextStyle(
                                                                              fontSize: 14,
                                                                              color: GroceryAppColors.black,
                                                                              fontWeight: FontWeight.bold),
                                                                        ),
                                                                      ),
                                                                      SizedBox(
                                                                        height:
                                                                            4,
                                                                      ),
                                                                      Text(
                                                                        data.unit_type,
                                                                        overflow:
                                                                            TextOverflow.ellipsis,
                                                                        maxLines:
                                                                            2,
                                                                        style: TextStyle(
                                                                            fontSize:
                                                                                12,
                                                                            color:
                                                                                GroceryAppColors.black,
                                                                            fontWeight: FontWeight.w600),
                                                                      ),
                                                                      Row(
                                                                        mainAxisAlignment:
                                                                            MainAxisAlignment.spaceBetween,
                                                                        crossAxisAlignment:
                                                                            CrossAxisAlignment.start,
                                                                        children: [
                                                                          Padding(
                                                                            padding:
                                                                                const EdgeInsets.only(top: 12.0),
                                                                            child:
                                                                                Column(
                                                                              mainAxisAlignment: MainAxisAlignment.start,
                                                                              crossAxisAlignment: CrossAxisAlignment.start,
                                                                              children: [
                                                                                Text(
                                                                                  '\u{20B9} ${data.buyPrice}',
                                                                                  overflow: TextOverflow.ellipsis,
                                                                                  maxLines: 2,
                                                                                  style: TextStyle(fontSize: 12, color: Colors.grey, decoration: TextDecoration.lineThrough),
                                                                                ),
                                                                                Padding(
                                                                                  padding: const EdgeInsets.only(top: 0.0, bottom: 6),
                                                                                  child: Text('\u{20B9} ${calDiscount(data.buyPrice, data.discount)}', style: TextStyle(color: GroceryAppColors.black, fontWeight: FontWeight.bold, fontSize: 14)),
                                                                                ),
                                                                              ],
                                                                            ),
                                                                          ),
                                                                          Padding(
                                                                            padding:
                                                                                const EdgeInsets.only(right: 2.0, top: 20),
                                                                            child:
                                                                                InkWell(
                                                                              onTap: () async {
                                                                                SharedPreferences pref = await SharedPreferences.getInstance();
                                                                                String mv = pref.getString(
                                                                                  "mvid",
                                                                                );
                                                                                if (GroceryAppConstant.isLogin) {
                                                                                  pref.setString("mvid", data.mv);
                                                                                  print(pref.getString("mvid"));

                                                                                  String mrp_price = calDiscount(data.buyPrice, data.discount);
                                                                                  totalmrp = double.parse(mrp_price);

                                                                                  double dicountValue = double.parse(data.buyPrice) - totalmrp;
                                                                                  String gst_sgst = calGst(mrp_price, data.sgst);
                                                                                  String gst_cgst = calGst(mrp_price, data.cgst);

                                                                                  String adiscount = calDiscount(data.buyPrice, data.msrp != null ? data.msrp : "0");

                                                                                  admindiscountprice = (double.parse(data.buyPrice) - double.parse(adiscount));

                                                                                  String color = "";
                                                                                  String size = "";

                                                                                  // String mv=  pref.getString("mvid",);

                                                                                  _addToproducts1(data.productIs, data.productName, data.img, int.parse(mrp_price), int.parse(data.count), color, size, data.productDescription, gst_sgst, gst_cgst, data.discount, dicountValue.toString(), data.APMC, admindiscountprice.toString(), data.buyPrice, data.shipping, data.quantityInStock, data.youtube, data.mv);
                                                                                  setState(() {});
                                                                                } else {
                                                                                  Navigator.push(
                                                                                    context,
                                                                                    MaterialPageRoute(builder: (context) => SignInPage()),
                                                                                  );
                                                                                }
                                                                              },
                                                                              child: Container(
                                                                                decoration: BoxDecoration(
                                                                                    color: GroceryAppColors.tela.withOpacity(0.1),
                                                                                    borderRadius: BorderRadius.circular(6),
                                                                                    border: Border.all(
                                                                                      color: GroceryAppColors.tela,
                                                                                      width: 1,
                                                                                    )),
                                                                                height: 24,
                                                                                width: 64,
                                                                                child: Center(
                                                                                  child: Text(
                                                                                    "Add",
                                                                                    style: TextStyle(fontSize: 14, color: GroceryAppColors.tela),
                                                                                  ),
                                                                                ),
                                                                              ),
                                                                              //     Container(
                                                                              //   height: 40,
                                                                              //   width: 40,
                                                                              //   child: Card(
                                                                              //     elevation:
                                                                              //         5,
                                                                              //     shape:
                                                                              //         RoundedRectangleBorder(
                                                                              //       borderRadius:
                                                                              //           BorderRadius.circular(
                                                                              //               5),
                                                                              //     ),
                                                                              //     child: Icon(
                                                                              //       Icons.add,
                                                                              //       color: GroceryAppColors
                                                                              //           .tela,
                                                                              //     ),
                                                                              //   ),
                                                                              // ),
                                                                            ),
                                                                          )
                                                                        ],
                                                                      ),
                                                                    ],
                                                                  ),
                                                                ),
                                                              ),
                                                            ],
                                                          ),
                                                        ),
                                                      )
                                                    : Image.asset(
                                                        "assets/images/logo.png",
                                                        height: 35,
                                                        width: 35,
                                                      );
                                              }),
                                        );
                                } else {
                                  Center(
                                    child: Text('Products Not Available'),
                                  );
                                }
                                return shimmer();
                             
                              })))
            ],
          ),
        ),
      ),
    );
  }

  int val = -1;

  ShowColor(int index) {
    setState(() {
      val = index;
    });
  }

  GridShowColor(int index) {
    setState(() {
      grid = index;
    });
  }

  Widget show_catnam() {
    return Container(
      margin: EdgeInsets.only(top: 10),
      decoration: BoxDecoration(
          border: Border.all(color: GroceryAppColors.tela1),
          color: GroceryAppColors.white),
      width: 120,
      child: ListView.builder(
          shrinkWrap: true,
          primary: false,
          scrollDirection: Axis.vertical,
          itemCount: cat_list.length,
          itemBuilder: (BuildContext context, int index) {
            return Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    InkWell(
                      onTap: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) => Screen2(
                                  cat_list[index].pcatId,
                                  cat_list[index].pCats)),
                        );
                        ShowColor(index);
                      },
                      child: Container(
                        color: val == index
                            ? GroceryAppColors.tela1
                            : GroceryAppColors.white,
                        width: 93,
                        height: 40,
                        child: Center(
                          child: Text(
                            cat_list[index].pCats,
                            textAlign: TextAlign.left,
                            style: TextStyle(
                                color: val == index
                                    ? GroceryAppColors.white
                                    : GroceryAppColors.black),
                          ),
                        ),
                      ),
                    ),
                    InkWell(
                      onTap: () {
                        setState(() {
                          //getlistval(cat_list[index].pcatId);
                          flag = true;
                          ShowColor(index);
                        });
                      },
                      child: Container(
                          // padding:EdgeInsets.all(1),
                          child: Icon(
                        Icons.arrow_forward_ios_outlined,
                        size: 25,
                        color: GroceryAppColors.black,
                      )),
                    )
                  ],
                ),
                Divider(
                  color: GroceryAppColors.tela1,
                ),
              ],
            );
          }),
    );
  }

  Widget show_cat_subnam() {
    return Container(
      // width: 150,
      margin: EdgeInsets.only(left: 100),
      child: ListView.builder(
          // separatorBuilder: (context, index) => Divider(
          //   color: Colors.grey,
          // ),
          shrinkWrap: true,
          primary: false,
          physics: ClampingScrollPhysics(),
          scrollDirection: Axis.vertical,
          itemCount: sub_cat_list.length,
          itemBuilder: (BuildContext context, int index) {
            return Column(
              children: [
                Container(
                    height: 50,
                    margin: EdgeInsets.only(left: 5, right: 5),
                    padding: EdgeInsets.only(top: 5, bottom: 5),
                    // color: Colors.grey,
                    child: ListTile(
                      title: Text(
                        sub_cat_list[index].pCats,
                        textAlign: TextAlign.center,
                        style: TextStyle(
                            color: GroceryAppColors.black, fontSize: 12),
                      ),
                      trailing: Icon(
                        grid != index
                            ? Icons.keyboard_arrow_down
                            : Icons.keyboard_arrow_up,
                        color: GroceryAppColors.black,
                      ),
                      onTap: () {
                        if (grid != index) {
                          GridShowColor(index);
                        } else {
                          setState(() {
                            grid = -1;
                          });
                        }
                      },
                    )

                    // Text(sub_cat_list[index].pCats,
                    //   textAlign: TextAlign.center,
                    //   style: TextStyle(color: AppColors.black),) ,
                    ),
                Divider(
                  color: GroceryAppColors.black,
                ),
                grid == index
                    ? Container(
                        color: GroceryAppColors.tela1,
                        padding: EdgeInsets.only(top: 10, bottom: 10),
                        // height: 90,
                        child: FutureBuilder(
                            future: getData(sub_cat_list[index].pcatId),
                            builder: (context, snapshot) {
                              if (snapshot.hasData) {
                                return Container(
                                  child: GridView.builder(
                                    physics: ClampingScrollPhysics(),
                                    controller: new ScrollController(
                                        keepScrollOffset: false),
                                    shrinkWrap: true,
                                    padding: EdgeInsets.only(
                                      left: 6,
                                      right: 6,
                                    ),
                                    gridDelegate:
                                        SliverGridDelegateWithFixedCrossAxisCount(
                                      crossAxisCount: 3,
                                      mainAxisSpacing: 2,
                                      crossAxisSpacing: 2,
                                      childAspectRatio: 0.7,
                                    ),
                                    itemBuilder: (context, index) {
                                      Categary item = snapshot.data[index];
                                      return InkWell(
                                        onTap: () {
                                          Navigator.push(
                                            context,
                                            MaterialPageRoute(
                                                builder: (context) => Screen2(
                                                    item.pcatId, item.pCats)),
                                          );
                                        },
                                        child: Container(
                                          child: Column(
                                            children: [
                                              Container(
                                                child: CircleAvatar(
                                                  radius: 30,
                                                  backgroundColor: Colors.white,
                                                  child: ClipOval(
                                                    child: new SizedBox(
                                                      width: 60.0,
                                                      height: 60.0,
                                                      child: item.img.length > 0
                                                          ? Image.network(
                                                              GroceryAppConstant
                                                                      .base_url +
                                                                  "manage/uploads/p_category/" +
                                                                  item.img,
                                                              fit: BoxFit.fill)
                                                          : Image.asset(
                                                              "assets/images/logo.png"),
                                                    ),
                                                  ),
                                                ),
                                              ),
                                              Container(
                                                padding: EdgeInsets.all(4),
                                                child: Text(
                                                  item.pCats,
                                                  maxLines: 2,
                                                  style:
                                                      TextStyle(fontSize: 10),
                                                ),
                                              )
                                            ],
                                          ),
                                        ),
                                      );
                                    },
                                    itemCount: snapshot.data.length == null
                                        ? 0
                                        : snapshot.data.length,
                                  ),
                                );
                              }
                              return Center(child: CircularProgressIndicator());
                            }),
                      )
                    : Row(),
              ],
            );
          }),
    );
  }

  String calDiscount(String byprice, String discount2) {
    String returnStr;
    double discount = 0.0;
    returnStr = discount.toString();
    double byprice1 = double.parse(byprice);
    double discount1 = double.parse(discount2);

    discount = (byprice1 - (byprice1 * discount1) / 100.0);

    returnStr = discount.toStringAsFixed(GroceryAppConstant.val);
    print(returnStr);
    return returnStr;
  }

  String calGst(String byprice, String sgst) {
    String returnStr;
    double discount = 0.0;
    if (sgst.length > 1) {
      returnStr = discount.toString();
      double byprice1 = double.parse(byprice);
      print(sgst);

      double discount1 = double.parse(sgst);

      discount = ((byprice1 * discount1) / (100.0 + discount1));

      returnStr = discount.toStringAsFixed(2);
      print(returnStr);
      return returnStr;
    } else {
      return '0';
    }
  }

  ProductsCart products4;
//cost_price=buyprice
  final DbProductManager dbmanager2 = new DbProductManager();
  void _addToproducts1(
      String pID,
      String p_name,
      String image,
      int price,
      int quantity,
      String c_val,
      String p_size,
      String p_disc,
      String sgst,
      String cgst,
      String discount,
      String dis_val,
      String adminper,
      String adminper_val,
      String cost_price,
      String shippingcharge,
      String totalQun,
      String varient,
      String mv) {
    ProductsCart st = new ProductsCart(
        pid: pID,
        pname: p_name,
        pimage: image,
        pprice: (price * quantity).toString(),
        pQuantity: quantity,
        pcolor: c_val ?? "",
        psize: p_size ?? "",
        pdiscription: p_disc,
        sgst: sgst,
        cgst: cgst,
        discount: discount,
        discountValue: dis_val,
        adminper: adminper,
        adminpricevalue: adminper_val,
        costPrice: cost_price,
        shipping: shippingcharge,
        totalQuantity: totalQun,
        varient: varient,
        mv: int.parse(mv));
    dbmanager2.getProductList1(pID).then((usersFromServe) async {
      // SharedPreferences prefer = await SharedPreferences.getInstance();
      SharedPreferences prefers = await SharedPreferences.getInstance();
      if (this.mounted) {
        setState(() {
          if (usersFromServe.length > 0) {
            products4 = usersFromServe[0];
            st.quantity = products4.quantity + st.quantity;
            st.pprice = (double.parse(products4.pprice) + (totalmrp * quantity))
                .toString();

            // st.quantity++;
            if (st.quantity <= int.parse(totalQun)) {
              dbmanager2.updateStudent1(st).then((id) => {
                    setState(() {}),
                    print("2/////////"),
                    showLongToast('Product added to your cart '),
                  });
            } else {
              showLongToast('Product added to your cart 3rd ');
              /*Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => WishList(),
                ),
              );*/
            }
          } else {
            dbmanager2.insertStudent(st).then((id) => {
                  // SharedPreferences prefer =
                  //           await SharedPreferences.getInstance(),
                  setState(() {
                    GroceryAppConstant.groceryAppCartItemCount++;
                    groceryCartItemCount(
                        GroceryAppConstant.groceryAppCartItemCount);
                    CartConstent.cc++;
                    print("4/////////");
                    prefers.setInt("cc", CartConstent.cc);
                  }),
                  showLongToast('Product added to your cart '),
                  /*Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => WishList(),
                    ),
                  ),*/
                });
          }
        });
      }
    });
  }
  shimmer(){
    return Padding(
                                          padding: const EdgeInsets.symmetric(
                                              horizontal: 4),
                                          child: GridView.builder(
                                              physics: BouncingScrollPhysics(),
                                              gridDelegate:
                                                  SliverGridDelegateWithFixedCrossAxisCount(
                                                mainAxisSpacing: 0,
                                                crossAxisSpacing: 0,
                                                crossAxisCount: 2,
                                                mainAxisExtent: 250,
                                              ),
                                              itemCount: 10,
                                              itemBuilder: (context, index) {
                                                
                                                return Container(
                                                        decoration:
                                                            BoxDecoration(
                                                          color: GroceryAppColors
                                                              .backgoundColor2,
                                                         
                                                        ),
                                                     
                                                        child: Card(
                                                          color: GroceryAppColors.colorBackground.withOpacity(0.4),
                                                          shape:
                                                              RoundedRectangleBorder(
                                                            borderRadius:
                                                                BorderRadius
                                                                    .circular(
                                                                        10),
                                                          ),
                                                          elevation: 0,
                                                     
                                                        ),
                                                      );
                                                  
                                              }),
                                        );
  }
}