Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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 在ListView中创建新的Image.network foreach_Flutter - Fatal编程技术网

Flutter 在ListView中创建新的Image.network foreach

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;

一般来说,我对flatter和基于Java的语言是完全陌生的,我自己就是PHP背景。这将是一个非常初级的问题:

我正在通过ListView创建一个新的Network.image,如下所示:

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]