我对 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);
作为lista
也List<PostMedia>
。
根据您的要求尝试转换List<PostMedia> lista_medios;
为List<List<PostMedia>> lista_medios;
或选择适当的数据类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句