flutter setState() 正在工作但没有更新 UI

flutter setState() is working but not updating the UI

我正在尝试制作电子商务应用程序。但是在产品详细信息屏幕中,当我尝试购物图标和最喜欢的图标时,它们没有更改颜色和图标。我在 SetState 函数中添加了打印语句,并在单击图标后更改了值。我得到了输出和值的变化,但它们没有在 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,
              ),
            ),
          ),
        ),
      ],
    ));
  }
}

您不应通过 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(
...