【发布时间】:2019-08-30 20:22:40
【问题描述】:
我收到此错误:位置参数过多:预期为 0,但找到了 3。 (extra_positional_arguments_could_be_named at itemBuilder...无法弄清楚是什么原因造成的。
错误出现在这里 ->
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),
);
}
}
【问题讨论】:
-
你能告诉我们
ProductItem构造函数的签名吗? -
类 ProductItem 扩展 StatelessWidget { ProductItem({this.id, this.imageUrl, this.title});最终字符串 id;最终字符串标题;最终字符串 imageUrl; @override Widget build(BuildContext context) { return GridTile( child: Image.network(imageUrl), ); } }