将元素添加到列表
Posted
技术标签:
【中文标题】将元素添加到列表【英文标题】:Adding elements to List 【发布时间】:2021-11-19 13:21:20 【问题描述】:我对在 Flutter/Dart 中使用列表感到困惑。
我有一个名为 PostMedia 的模型类:
class PostMedia
String media_url;
bool es_foto;
bool es_video;
bool es_youtube;
PostMedia(this.media_url, this.es_foto, this.es_video, this.es_youtube);
factory PostMedia.fromJson(Map<String, dynamic> json) => PostMedia(
media_url: json['media_url'],
es_foto: json['es_foto'],
es_video: json['es_video'],
es_youtube: json['es_youtube']);
Map<String, dynamic> toJson() =>
"media_url": media_url,
"es_foto": es_foto,
"es_video": es_video,
"es_youtube": es_youtube
;
在应用程序屏幕上,我正在获取 Firestore 文档。 每个文档都有一个名为 post_tiene_fotos 的布尔字段和用于媒体 url 的字符串字段,例如 foto1、foto2、foto3 等:
foto1= "https://mipagina.es/foto1r3424.jpg
foto2= "https://mipagina.es/foto5453535.jpg
foto3= "https://mipagina.es/foto98989.jpg
我将所有 Firestore 文档传递给名为 listraFiltrada
的 Post 类型列表。
然后我想创建一个 PostMedia 列表以在 PageView 小部件上显示媒体文件,该小部件需要 PostMedia 类型的列表来显示媒体文件。
我想将每个 foto1、foto2 和 foto3 url 和媒体类型添加到名为 lista_medios 的列表中,如下所示:
ListView.builder(
itemCount: listaFiltrada.length,
itemBuilder: (context, index)
bool es_ambassador =
listaFiltrada[index].post_autor_is_ambassador;
//ver si el post tiene media
bool tiene_media =
listaFiltrada[index].post_tiene_media;
bool tiene_fotos =
listaFiltrada[index].post_tiene_fotos;
List<PostMedia> lista_medios;
lista_medios = [];
if (tiene_fotos)
//foto 1
var foto1 = listaFiltrada[index].foto_1;
//incluimos foto1 en la lista
List<PostMedia> lista = [
PostMedia(
media_url: foto1,
es_foto: true,
es_video: false,
es_youtube: false)
];
lista_medios.add(lista);
但我收到了警告:
The argument type 'List<PostMedia>' can't be assigned to the parameter type 'PostMedia/
获取foto1的值,将其转换为PostMedia类型的元素,然后如何添加更多像foto2和foto3这样的元素?
【问题讨论】:
【参考方案1】:您实际上是在以下行中的 lista_medois 中插入 List 而不是 PostMedia:
lista_medios.add(lista);
因为lista
也是List<PostMedia>
。
要么尝试将List<PostMedia> lista_medios;
转换为List<List<PostMedia>> lista_medios;
,要么根据您的要求选择合适的数据类型。
【讨论】:
成功了,谢谢以上是关于将元素添加到列表的主要内容,如果未能解决你的问题,请参考以下文章