Dart 未调用循环的颤振
我正试图用flifter制作一个Reddit的粗略克隆来帮助我学习,但在初始化过程中,我被困在了没有调用for循环的地方。我的代码中失败的部分如下所示: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&
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,正如预期的那样