Flutter 在嵌套for循环中创建小部件
我无法访问内部for循环中的外部for循环计数器 你知道怎么做吗Flutter 在嵌套for循环中创建小部件,flutter,dart,Flutter,Dart,我无法访问内部for循环中的外部for循环计数器 你知道怎么做吗 class buildsubcategories extends StatelessWidget { List<cate.Categories> scat; buildsubcategories(this.scat); @override Widget build(BuildContext context) { return Column( children: <Widget
class buildsubcategories extends StatelessWidget {
List<cate.Categories> scat;
buildsubcategories(this.scat);
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
for (int i = 0; i < scat.length; i++) Text(scat[i].categoryname),
Column(
children: <Widget>[
for (int j = 0; j < scat.length; j++)
Text(scat[i].subcategory[j]['subcategoryname'].toString())
],
)
],
);
}
```}
Expected Result : Able to access the variable i in the inner for loop
class buildsubcategories扩展了无状态小部件{
列出scat;
构建子类别(this.scat);
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
对于(int i=0;i
我认为您使用的语法不正确,因为您试图在return语句中创建for循环。相反,您可以尝试以下方法:
@override
Widget build(BuildContext context) {
List<Widget> myList = List.generate(10, (index){
var outerText = [Text("OuterText")];
return Column(
children: outerText..addAll(List.generate(10, (index){
Text("Inner Text");
})),
);
});
return Column(
children: myList
);
}
@覆盖
小部件构建(构建上下文){
List myList=List.generate(10,(索引){
var outerText=[Text(“outerText”)];
返回列(
子项:outerText..addAll(List.generate)(10,(索引){
文本(“内部文本”);
})),
);
});
返回列(
儿童:myList
);
}
这里没有嵌套循环。请参阅我在下面添加的评论:
children: <Widget>[
// this creates scat.length many Text elements here
for (int i = 0; i < scat.length; i++) Text(scat[i].categoryname),
// there is only one column that comes after the scat.length many Text elements
Column(
children: <Widget>[
// this creates scat.length many elements inside the Column
for (int j = 0; j < scat.length; j++)
Text(scat[i].subcategory[j]['subcategoryname'].toString())
],
)
],
儿童:[
//这将在此处创建scat.length多个文本元素
对于(int i=0;i
以下是如何在嵌套循环中创建类别:
children: <Widget>[
// note the ... spread operator that enables us to add two elements
for (int i = 0; i < scat.length; i++) ...[
Text(scat[i].categoryname),
Column(
children: <Widget>[
// this creates scat.length many elements inside the Column
for (int j = 0; j < scat.length; j++)
Text(scat[i].subcategory[j]['subcategoryname'].toString())
],
)
]
],
儿童:[
//请注意…spread运算符,它使我们能够添加两个元素
对于(int i=0;i
请注意,要在每个循环迭代中添加两个元素,我们必须将这两个元素放入一个列表中,并使用
…
扩展运算符将其展开 导入“包装:颤振/材料.省道”;类类别{Categories({@required this.categoryname,@required this.categoryImage,@required this.subcategory});字符串categoryname;字符串categoryImage;列表子类别;Categories.fromMap(映射映射映射){this.categoryname=Map['name'];this.categoryImage=Map['imageurl'];this.subcategory=Map['subcategory'];}
}这是一个新的Dart功能:哇。谢谢你让我注意到这一点!看到你的答案看起来很整洁。我将自己开始使用它!