首页 > 解决方案 > “对象?”类型的值 不能分配给“ProductDetailsArguments”类型的变量

问题描述

我试图从我制作的列表中获取评级,并在我尝试获取评级以应用它时提出一个论点,所以我制作了一个 ModalRoute 来尝试获取它,但我收到了一个错误。

class ProductDetails extends StatelessWidget {
  static String routeName = "/Product_details";

  const ProductDetails({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    final ProductDetailsArguments arguments = ModalRoute.of(context)!.settings.arguments;
    return Scaffold(
      backgroundColor: Color(0XFFF5F6F9),
      appBar: CustomAppBar(arguments.product.rating),
      body: Body(),
    );
  }
}


class ProductDetailsArguments {
  final Product product;

  ProductDetailsArguments({required this.product});
}

List<Product> demoProducts = [
  Product(
    id: 1,
    images: [
      "assets/images/mine.png",
      "assets/images/mine.png",
      "assets/images/mine.png",
      "assets/images/mine.png",
    ],
    colors: [
      Color(0xFFF6625E),
      Color(0xFF836DB8),
      Color(0xFFDECB9C),
      Colors.white,
    ],
    title: "Wireless Controller for PS4™&quot;,
    price: 64.99,
    description: description,
    rating: 4.8,
    isFavourite: true,
    isPopular: true,
  ),

标签: flutterdart

解决方案


代替:

final ProductDetailsArguments arguments = ModalRoute.of(context)!.settings.arguments;

尝试:

final ProductDetailsArguments arguments = ModalRoute.of(context)!.settings.arguments as ProductDetailsArguments;

推荐阅读