【发布时间】:2019-07-11 09:58:53
【问题描述】:
我有一个 2x2 网格,我试图用卡片填充,其中每张卡片都有特定的样式。每张卡片都有一个标题和一个路线,点击后会打开另一个页面(路线)。我想为“名称”索引中的每个“名称”指定卡片的“名称”和点击应该指向的“页面名称”。
问题是 1。我不确定如何在小部件中执行 for-each 循环。 2.不知道如何使这个工作超过1个参数;卡片名称和新页面名称。
我已经尝试了几个选项,其中 2 个如下所示。
class SubjectsPage extends StatefulWidget {
@override
_SubjectsPageState createState() => new _SubjectsPageState();
}
class _SubjectsPageState extends State<SubjectsPage> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
var names = ["one", "two", "three", "four"];
return new Material(
child: new Container(
child: new Center(
child: GridView.count(
crossAxisCount: 2,
padding: EdgeInsets.fromLTRB(16.0, 128.0, 16.0, 16.0),
childAspectRatio: 8.0 / 8.5,
children: <Widget>[
//option 1
names.forEach((unit) => Cards(unit: unit,)),
//option 2
for (var i = 0; i < names.length; i++) {
Cards(unit: names[i])
}
],
),
),
),
);
}
}
选项1的错误是“这里的表达式的类型是'void',因此不能使用。”
选项2的错误是“无法将元素类型'Set'分配给列表类型'Widget'。”
【问题讨论】: