मैं एक ईकॉमर्स ऐप बनाने की कोशिश कर रहा हूं। लेकिन उत्पाद विवरण स्क्रीन में जब मैं आइकन और पसंदीदा आइकन को कार्ट करने की कोशिश कर रहा हूं तो वे अपने रंग और आइकन नहीं बदल रहे हैं। मैंने सेटस्टेट फ़ंक्शन में एक प्रिंट स्टेटमेंट और आइकन पर क्लिक करने के बाद बदलने के लिए मूल्य जोड़ा है। मुझे आउटपुट और मूल्य परिवर्तन मिल रहे हैं लेकिन वे UI में अपडेट नहीं हो रहे हैं। क्रिप्या मेरि सहायता करे।

class ProductDetails extends StatefulWidget {
  final Product _product;

  ProductDetails(this._product);

  @override
  _ProductDetailsState createState() => _ProductDetailsState(_product);
}

class _ProductDetailsState extends State<ProductDetails> {
  final Product _product;
  _ProductDetailsState(this._product);
  @override
  void initState() {
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return ScaffoldWidget(
        child: ListView(
      children: <Widget>[
        MainPartProduct(_product),
        Container(
          child: Row(
            children: <Widget>[
              GestureDetector(
                onTap: () {
                  Navigator.of(context).push(
                    (MaterialPageRoute(
                      builder: (context) => CartScreen(),
                    )),
                  );
                },
                child: Padding(
                  padding: const EdgeInsets.symmetric(vertical: 0.0),
                  child: Container(
                    margin: EdgeInsets.symmetric(vertical: 10.0),
                    alignment: Alignment.center,
                    width: MediaQuery.of(context).size.width * 0.75,
                    color: Colors.red,
                    child: Padding(
                      padding: const EdgeInsets.symmetric(vertical: 10.0),
                      child: Text(
                        "BUY",
                        style: TextStyle(
                          color: Colors.white,
                          fontSize: 20,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                    ),
                  ),
                ),
              ),
              IconButton(
                color:_product.cart ? Colors.black : Colors.red,
                onPressed: () {
                  _product.cart ? productCart.remove(_product): productCart.add(_product);
                  setState(() {
                    _product.cart = !_product.cart;
                    print(_product.cart);
                  });
                },
                icon:_product.cart ? Icon(Icons.remove_shopping_cart) : Icon(Icons.add_shopping_cart),
              ),
              IconButton(
                color: Colors.red,
                onPressed: () {
                  this.setState(() {
                    _product.fav ? productFavorite.remove(_product) : productFavorite.add(_product);
                    _product.fav = !_product.fav;
                  });
                },
                icon: (_product.fav) ? Icon(Icons.favorite) : Icon(Icons.favorite_border),
              ),
            ],
          ),
        ),
        Padding(
          padding: const EdgeInsets.symmetric(horizontal: 10.0),
          child: Container(
            height: 500,
            child: Text(
              _product.details + _product.details,
              style: TextStyle(
                fontSize: 16.5,
              ),
            ),
          ),
        ),
      ],
    ));
  }
}
0
Shihab Uddin 1 अप्रैल 2020, 14:11

1 उत्तर

सबसे बढ़िया उत्तर

आपको StatefulWidget के कंस्ट्रक्टर के माध्यम से पैरामीटर पास नहीं करना चाहिए। आपको इसे widget फ़ील्ड उर्फ ​​widget._product के माध्यम से एक्सेस करना होगा

class ProductDetails extends StatefulWidget {
  final Product _product;

  const ProductDetails({ Key key, this._product }): super(key: key);  

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

class _ProductDetailsState extends State<ProductDetails> {

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return ScaffoldWidget(
        child: ListView(
      children: <Widget>[
        MainPartProduct(widget._product),
        Container(
...
0
Manuel 1 अप्रैल 2020, 11:41