如何在初始化器颤动中从小部件访问传递的值

how to access passed value from widget in initializer flutter

我正在从另一个页面获取 imageUrl。我想在“theimage”中使用“imageUrl”,但我无法访问它。我遇到了这个错误。

无法在初始化程序中访问实例成员 'widget'。 尝试用不同的表达式替换对实例成员的引用

class ProductCard extends StatefulWidget {
  final String imageUrl;
  ProductCard(
      {this.imageUrl,});

  @override
  State<ProductCard> createState() => _ProductCardState();
}

class _ProductCardState extends State<ProductCard> {

  // I can not access widget.imageUrl in here
    final theImage = Image.network("${widget.imageUrl}", fit: BoxFit.cover);

    /// Did Change Dependencies
    @override
    void didChangeDependencies() {
      precacheImage(theImage.image, context);
      super.didChangeDependencies();
    }
  @override
  Widget build(BuildContext context) {

    return Container(
            child:theImage;
            );
   }
}

您正在使用命名构造函数 ProductCard 要求 imageUrl 可为空,或提供默认值。

 const ProductCard(
      {required this.imageUrl,});

并使用initState进行初始化。

  late final Image theImage;

    @override
  void initState() {
      theImage = Image.network("${widget.imageUrl}", fit: BoxFit.cover);
    super.initState();
  }

下一步从 theImage 末尾删除 ; 或使用 ,

  @override
  Widget build(BuildContext context) {
    return Container(child: theImage);
  }