【问题标题】:How to retrieve properties from a List of Class in Dart?如何从 Dart 中的类列表中检索属性?
【发布时间】:2018-06-03 15:46:57
【问题描述】:

我在这里创建了一个包含 4 个元素的自定义类...

class Top {
  String videoId;
  int rank;
  String title;
  String imageString;

  Top({this.videoId, this.rank, this.title, this.imageString});
}

我正在检索一些 Firebase 项目以填充这些元素..

var top = new Top(videoId: items['vidId'], rank: items['Value'],
title: items['vidTitle'], imageString: items['vidImage']);

然后我将它们添加到“Top”类型的列表中,以便根据“rank”对 Class 值进行排序...

List<Top> videos = new List();
videos..sort((a, b) => a.rank.compareTo(b.rank));
videos.add(top);

但是,打印 videos 会记录这个...

[Instance of 'Top', Instance of 'Top', Instance of 'Top', Instance of 'Top', Instance of 'Top', Instance of 'Top', Instance of 'Top', Instance of 'Top']

我不确定是不是因为它在一个列表中。如何从视频中获取可用的“Top”属性值?例如,当我查询 top.rank 时,我得到了这个......

[14, 12, 11, 10, 10, 6, 5, 1]

【问题讨论】:

    标签: list class dart element flutter


    【解决方案1】:

    列表的属性是通过[] 运算符传递元素的索引来获得的。

    如果您想检索列表中的第三个Top videos,您可以像这样访问它

    videos[3]
    

    如果您想检索列表videos 中第三个Top 的属性rank,您可以像这样访问它

    videos[3].rank
    

    如果您希望打印语句显示列表项,则更改您的类以覆盖toString 方法,例如

    class Top {
      String videoId;
      int rank;
      String title;
      String imageString;
    
     Top({this.videoId, this.rank, this.title, this.imageString});
    
     @override
     String toString(){
         return "{videoId: $videoId, rank: $rank, title: $title, imageString: $imageString}";
     }
    }
    

    希望有所帮助!

    【讨论】:

      猜你喜欢
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2015-09-29
      相关资源
      最近更新 更多