Flutter 在ListView中创建新的Image.network foreach
一般来说,我对flatter和基于Java的语言是完全陌生的,我自己就是PHP背景。这将是一个非常初级的问题: 我正在通过ListView创建一个新的Network.image,如下所示:Flutter 在ListView中创建新的Image.network foreach,flutter,Flutter,一般来说,我对flatter和基于Java的语言是完全陌生的,我自己就是PHP背景。这将是一个非常初级的问题: 我正在通过ListView创建一个新的Network.image,如下所示: new Image.network(snapshot.data[index].imageurl.toString() ?? ''), 好的,非常适合作为快照。数据[索引]。imageurl被视为: data ['content'][0]['imageurl'] 定义为: String imageurl;
new Image.network(snapshot.data[index].imageurl.toString() ?? ''),
好的,非常适合作为快照。数据[索引]。imageurl被视为:
data ['content'][0]['imageurl']
定义为:
String imageurl;
List imageurl;
但是,我要做的是获取整个阵列:
data ['content']['imageurl']
我想应该定义为:
String imageurl;
List imageurl;
并循环遍历它,为数组中的每个条目创建自己的Image.network
我尝试了多种方法,包括:
return new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
snapshot.data[index].imageurl.forEach((data) {
new Image.network(snapshot.data[index].imageurl.toString() ?? ''),
}
返回新列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
snapshot.data[index].imageurl.forEach((数据){
新建Image.network(snapshot.data[index].imageurl.toString()??“”),
}
但是Foreach循环给了我一个错误:
“此处的表达式具有“void”类型,因此无法使用
我如何才能真正做到这一点?这里没有任何想法。
Iterable。forEach
用于对Iterable的每个项调用函数。它不会产生任何输出(返回void
),并且从提供的函数返回的任何内容都将被丢弃
要从现有的列表
或可编辑列表
生成新的列表
,您需要使用该方法
例如:
List<Widget> result = snapshot.data[index].imageurl.map((data) {
// Make sure to return the result.
return Image.network(snapshot.data[index].imageurl.toString())
}).toList(); // Call to convert the Iterable into a List.
List result=snapshot.data[index].imageurl.map((数据){
//确保返回结果。
返回Image.network(snapshot.data[index].imageurl.toString())
}).toList();//调用将Iterable转换为列表。
还有另一个潜在的问题:
x.toString()??“
是不必要的,因为toString()永远不应该返回null-甚至null.toString()
返回“null”好,所以我终于找到了答案
List<Widget> result = content.map((c) => Image.network(snapshot.data[index].imageUrl.toString())).toList();
非常感谢您的回答!了解.forEach。我确实尝试了您的示例,但我得到的是一个错误:无法将元素类型“List”分配给列表类型“Widget”。当尝试将其添加到ListView.builder中时,听起来像是在传递需要单个Widget的结果。请确保您的代码看起来像this:Column(children:snapshot.data/**rest of code**/.toList()),我是肯定的。这确实解决了这个问题。现在,我只需要弄清楚如何通过new Image.network查看返回,就像我在上面的示例中所做的那样(是的,非常新,所以完全不懂东西)。但是,谢谢你,这解决了这个问题。你也可以帮我解决这个问题吗?当我尝试运行加载器时,我现在得到的只是加载器图标。实际上,忘记了最新的答案。我从一开始就缺少List result=。获取“缺少选择器,例如或[0]