如何在初始化器颤动中从小部件访问传递的值
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);
}
我正在从另一个页面获取 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);
}