在颤动/飞镖中映射多个列表?

问题描述:

我有SWIFT代码,我在其中映射了一组列表,其中1个列表是int列表,并且它们按降序映射。这是我的SWIFT代码...在颤动/飞镖中映射多个列表?

class Video 
{ 
    let videoID: String 
    let rank: Int 
    let title: String 
    let imageString: String 

    init(videoID: String, rank: Int, title: String, imageString: String) 
    { 
     self.videoID = videoID 
     self.rank = rank 
     self.title = title 
     self.imageString = imageString 
    } 
} 

var videos = [Video]() 

videos.sort { $0.rank < $1.rank } 

self.vidTitleArray = videos.map { $0.title } 
self.vidRankArray = videos.map { $0.rank } 
self.vidIdArray = videos.map { $0.videoID } 
self.vidImageArray = videos.map { $0.imageString } 

这是我在扑哪里,但我得到的错误前进......

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

    videos(this.videoId, this.rank, this.title, this.imageString); 
} 

我如何做一个list从类构造函数然后重新排列所有元素降序排列映射到?

***** OPTION *****

这是我不使用Video类代码。我得到它排名正确使用SplayTreeMap但如果Value永远是相同的,它只会带回1个节点。有没有办法映射所有4个地图降序Value

Map myMap = event.data.snapshot.value; //存储每个地图

      var titles = myMap.values; 

          List onesTitles = new List(); 
          List onesIds = new List(); 
          List onesImages = new List(); 
          List onesRank = new List(); 

          for (var items in titles) { 
          onesTitles.add(items['vidTitle']); 
          onesIds.add(items['vidId']); 
          onesImages.add(items['vidImage']); 
          onesRank.add(items['Value']); 
          } 

          names = onesTitles; 
          ids = onesIds; 
          numbers = onesRank; 
          vidImages = onesImages; 
+0

我已经编辑了答案,使其了解如何使用List.sort更加清晰()。 – aziza

您可以使用List.sort()为此,我已经创建,我硬编码的Videos类的3个实例自定义的例子,然后在上升增加他们在我的构建方法是在List订购。使用List.sort()compareTo,我可以按降序重新排列它们。

List<Videos> myList = [_firstVideos, _secondVideos, _thirdVideos]; 
sort() { 
     for (var video in myList) { 
     print(video.rank); ///prints 1 2 3 
     } 
     myList.sort((y, x) => x.rank.compareTo(y.rank)); 

     for (var video in myList) { 
     print(video.rank); ///prints 3 2 1 
     } 
    } 

...

import 'package:flutter/material.dart'; 


    void main(){ 
     runApp(new MaterialApp(home: new MyApp(),)); 
    } 

    class MyApp extends StatelessWidget { 

     Videos _firstVideos = new Videos(
     videoId: "0001", 
     rank: 1, 
     title: "My First Video", 
     imageString: "My First Image", 
    ); 
     Videos _secondVideos = new Videos(
     videoId: "0002", 
     rank: 2, 
     title: "My Seocnd Video", 
     imageString: "My Second Image", 
    ); 

     Videos _thirdVideos = new Videos(
     videoId: "0003", 
     rank: 3, 
     title: "My Third Video", 
     imageString: "My Third Image", 
    ); 

     @override 
     Widget build(BuildContext context) { 
     List<Videos> myList = [_firstVideos,_secondVideos,_thirdVideos]; 
     sort() 
     { 
      myList.sort((y,x)=>x.rank.compareTo(y.rank)); 

     print(myList[0].title); 
     } 
     return new Scaffold(
      body: new Center(
      child: new FlatButton(onPressed: sort, child: new Text("Sort")), 
     ), 
     ); 
     } 
    } 


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

     Videos({this.videoId, this.rank, this.title, this.imageString}); 
    } 
+0

@azia请看看我添加的其他'OPTION'。我试图排序而不建立'Video'列表 –