2017-10-19 11 views
0

나는 SWIFT 코드를 가지고 있습니다. 여기서 같은 수의 요소를 가진 목록을 매핑했습니다. 여기서 1은 int 목록이고 내림차순으로 매핑되었습니다. 여기에 내가 클래스에서 list을 어떻게 내 SWIFT 코드 ... 나는 떨림에 어딘지 여기 Flutter/Dart에서 여러 목록 매핑?

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); 
} 

을 오류를 받고 있어요 생성자는 순위에 매핑 된 내림차순으로 모든 요소를 ​​재정렬합니다.

***** OPTION *****

여기 Video 클래스를 사용하지 않고 내 코드입니다. 나는 정확하게 SplayTreeMap을 사용하여 순위를 매기지만, Value이 똑같다면 다시 1 노드 만 가져옵니다. Value으로 내림차순으로 4 개의지도를 모두 매핑하는 방법이 있습니까?

지도 myMap = event.data.snapshot.value; // 당신은 그 목적을 위해 List.sort()을 사용할 수 있습니다

      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

답변

2

각 맵을 저장, 나는 열심히 당신의 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 내가 추가 한 다른 '옵션'을 살펴보십시오. '비디오 '리스트를 만들지 않고 정렬하려고합니다. –