将元素添加到列表

姆瓦斯科

我对 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.

然后我想创建一个 PostMedia 列表来在需要 PostMedia 类型的列表来显示媒体文件的 PageView 小部件上显示媒体文件。

我想将每个 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?

莫尼克

您实际上是在以下行的 lista_medois 中插入 List 而不是 PostMedia :

lista_medios.add(lista);

作为listaList<PostMedia>

根据您的要求尝试转换List<PostMedia> lista_medios;List<List<PostMedia>> lista_medios;或选择适当的数据类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章