Dart 未调用循环的颤振

Dart 未调用循环的颤振,dart,flutter,Dart,Flutter,我正试图用flifter制作一个Reddit的粗略克隆来帮助我学习,但在初始化过程中,我被困在了没有调用for循环的地方。我的代码中失败的部分如下所示: class RedditTable extends StatelessWidget { List posts; List containers; RedditTable(List posts) { this.posts = posts; this.containers = new List<Container&

我正试图用flifter制作一个Reddit的粗略克隆来帮助我学习,但在初始化过程中,我被困在了没有调用for循环的地方。我的代码中失败的部分如下所示:

class RedditTable extends StatelessWidget {
  List posts;
  List containers;
  RedditTable(List posts) {
    this.posts = posts;
    this.containers = new List<Container>();

    for (var i = 0; i == posts.length; i++) {
      var post = posts[i]["data"];
      var title = post["title"];
      var container = new Container(
          margin: new EdgeInsets.symmetric(horizontal: 4.0),
          child: new Text(title)
      );
      containers.add(container);
    }
  }
类RedditTable扩展无状态小部件{
列出员额;
列出集装箱清单;
Redditable(列出帖子){
这个.posts=posts;
this.containers=新列表();
for(var i=0;i==posts.length;i++){
var post=posts[i][“数据”];
var title=职位[“职位”];
var容器=新容器(
边距:新边集。对称(水平:4.0),
子:新文本(标题)
);
容器。添加(容器);
}
}
for循环没有被调用,因此容器列表没有被填充。当我在循环之前打印
posts.length
时,我得到一个25的输出,但是在循环中执行相同的操作不会返回任何结果。

使用
for(var I=0;I
而不是
for(var I=0;I==posts.length;I++)

由于您没有真正使用
i
,因此您可以将其用于in或list转换:

for(var post in post){
var title=post[“数据”][“标题”];
var容器=新容器(
边距:新边集。对称(水平:4.0),
儿童:新文本(标题),
);
容器。添加(容器);
}
//或
containers=posts.map((post)=>newcontainer(
边距:新边集。对称(水平:4.0),
子项:新文本(发布[“数据”][“标题]),
)).toList();

您可以使用标准for循环进行迭代。例如:

var message = StringBuffer('Dart is fun');
for (var i = 0; i < 5; i++) {
  message.write('!');
}
var message=StringBuffer('Dart很有趣');
对于(变量i=0;i<5;i++){
留言。写(“!”);
}
Dart for循环中的闭包捕获索引的值,避免了JavaScript中常见的陷阱。例如,请考虑:

var callbacks = [];
for (var i = 0; i < 2; i++) {
  callbacks.add(() => print(i));
}
callbacks.forEach((c) => c());
var回调=[];
对于(变量i=0;i<2;i++){
callbacks.add(()=>print(i));
}
forEach((c)=>c());
输出是0,然后是1,正如预期的那样