Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在嵌套for循环中创建小部件_Flutter_Dart - Fatal编程技术网

Flutter 在嵌套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

我无法访问内部for循环中的外部for循环计数器

你知道怎么做吗

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功能:哇。谢谢你让我注意到这一点!看到你的答案看起来很整洁。我将自己开始使用它!