我得到了这个错误:太多的位置参数:0预期,但3找到。(extra_positional_arguments_could_be_named at itemBuilder...and不知道是什么原因造成的。
错误出现在这里,->
itemBuilder: (ctx, i) => ProductItem(
loadedProducts[i].id,
loadedProducts[i].title,
loadedProducts[i].imageUrl,
),class ProductListPage extends StatelessWidget {
ProductListPage({this.context});
final List<Product> loadedProducts = [
Product(
id: 'p1',
title: "Michael Kora",
description: 'this is cool',
price: 699,
imageUrl:
"https://n1.sdlcdn.com/imgs/c/9/8/Lambency-Brown-Solid-Casual-Blazers-SDL781227769-1-1b660.jpg",
),
Product(
id: 'p1',
title: "Michael Kora",
description: 'this is cool',
price: 699,
imageUrl:
"https://n1.sdlcdn.com/imgs/c/9/8/Lambency-Brown-Solid-Casual-Blazers-SDL781227769-1-1b660.jpg",
),
];
final BuildContext context;
// @override
Widget build(BuildContext context) {
return Scaffold(
body: GridView.builder(
padding: const EdgeInsets.all(10.0),
itemCount: loadedProducts.length,
itemBuilder: (ctx, i) => ProductItem(
loadedProducts[i].id,
loadedProducts[i].title,
loadedProducts[i].imageUrl,
),
);
}
}ProductItem的定义如下:
class ProductItem extends StatelessWidget {
ProductItem({this.id, this.imageUrl, this.title});
final String id;
final String title;
final String imageUrl;
@override
Widget build(BuildContext context) {
return GridTile(
child: Image.network(imageUrl),
);
}
}发布于 2019-08-30 21:54:06
简短回答:
ProductItem需要命名,而不是位置参数。初始化如下:
ProductItem(
id: loadedProducts[i].id,
title: loadedProducts[i].title,
imageUrl: loadedProducts[i].imageUrl,
)更长的答案:
错误通知我们:
太多的位置论点:0预期,但3发现。
这表明ProductItem构造函数不需要位置参数。它不知道该拿它们怎么办。为什么?让我们检查一下ProductItem类定义:
class ProductItem extends StatelessWidget {
ProductItem({this.id, this.imageUrl, this.title});
...
}参数包含在{}中。在Dart中,这意味着它们是可选的命名参数。也就是说,如果你决定通过它们,你必须像这样把它们传递进去:
ProductItem(id: 'id', imageUrl: 'url', title: 'title')请注意,每个参数的前面都有其名称,因此它被称为命名参数。相反,位置参数的区别仅在于它们在调用构造函数时所采取的立场。
类定义告诉我们,不应该用位置参数调用ProductItem的构造函数。相反,应该使用命名参数。ProductItem应该以这样的方式构造:
ProductItem(
id: loadedProducts[i].id,
title: loadedProducts[i].title,
imageUrl: loadedProducts[i].imageUrl,
)https://stackoverflow.com/questions/57732835
复制相似问题