无法访问类中的列表项

问题描述 投票:0回答:2

在过去的两个小时中,我一直在围绕这个问题进行研究(请记住,我是Flutter的新手)。我正在尝试检查是否已正确设置所有内容以从OMDB获取电影列表。除了我不知道如何访问列表中的内容外,其他一切似乎都还可以。 originalTitle。

(it detects result as a List from the model but it won't detect the strings inside)

这是模型:

  class MovieItem {
  int page;
  int totalResults;
  int totalPages;
  List<Results> results;

  MovieItem({this.page, this.totalResults, this.totalPages, this.results});

  MovieItem.fromJson(Map<String, dynamic> json) {
    page = json['page'];
    totalResults = json['total_results'];
    totalPages = json['total_pages'];
    if (json['results'] != null) {
      results = new List<Results>();
      json['results'].forEach((v) {
        results.add(new Results.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['page'] = this.page;
    data['total_results'] = this.totalResults;
    data['total_pages'] = this.totalPages;
    if (this.results != null) {
      data['results'] = this.results.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Results {
  String posterPath;
  int id;
  String originalLanguage;
  String originalTitle;
  String title;

  Results(
      {this.posterPath,
      this.id,
      this.originalLanguage,
      this.originalTitle,
      this.title,});

  Results.fromJson(Map<String, dynamic> json) {
    posterPath = json['poster_path'];
    id = json['id'];
    originalLanguage = json['original_language'];
    originalTitle = json['original_title'];
    title = json['title'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['poster_path'] = this.posterPath;
    data['id'] = this.id;
    data['original_language'] = this.originalLanguage;
    data['original_title'] = this.originalTitle;
    data['title'] = this.title;
    return data;
  }
}
flutter dart flutter-layout
2个回答
0
投票

您正在尝试在List<Result>而不是Result上调用属性。您尝试访问的属性存在于Result上...如果List个对象存在Result,那么您期望movieItem.results.originalTitle返回什么?可以有多少个Result对象,其标题可能不同?如果您只想将它​​们全部打印出来:

Future<MovieItem> movieItem() async {
   var movieItem = await
   client.movieItem();
   movieItem.results.forEach((result) => print(result.originalTitle));
   return movieItem;
}

forEach将允许您调用属性并将其打印在列表中的每个结果上


0
投票

您的movieItem模型类具有结果对象的列表。因此,当您调用client.movi​​eItem方法时,您将获得一个MovieItem对象,并且您想打印特定的结果项,然后执行此操作

print(movieItem.results[0].originalTitle)

并且如果要访问结果列表中的所有对象,则可以使用for循环来实现它

for(int i=0;i<movieItem.results.length;i++)
{
print(movieItem.results[i].originalTitle);
}

-1
投票

为公平起见,元用户的主要任务与原始任务紧密相关,原始任务是创建每个编程问题的详细答案库。

© www.soinside.com 2019 - 2024. All rights reserved.