簡體   English   中英

Flutter 排序兩個值后的對象列表

[英]Flutter sort List of Objects after two values

我有一個需要排序的CustomObjects List 首先,對象應該在它們的屬性dateTime之后排序,如果相同,它應該在另一個屬性之后排序,即compare -property。

我搜索了 multisort 並發現了這個:

medcimentNotificationListData.sort((med1, med2) {
  var r = med1.datetime.compareTo(med2.datetime);
  if (r != 0) return r;
  return med1.mealTimeDescription.compareValue
      .compareTo(med2.mealTimeDescription.compareValue);
});

但是當在它之后打印列表時,列表沒有排序..

medcimentNotificationListData.forEach((medicamentNotificationData) {
  print(
      '${medicamentNotificationData.title}, order: ${medicamentNotificationData.mealTimeDescription.compareValue}');
});

我在這里想念什么? 有沒有簡單的方法進行多選?

如果您需要更多信息,請告訴我!

當您調用sort()方法時,function 調用(a, b) { // your function}應該返回 -1、0 或 1。這個 function 在現有訂單上被調用。 首先,您的元素a是您的第一個元素,元素b是列表的第二個元素,作為列表的現有順序

如果您的 function 返回 -1 這意味着您的元素a應該放在元素b之前,因此它將a放在b之前並通過將舊元素b替換為新元素a和新元素b將是舊元素之后的元素再次調用 function b元素。

如果您的 function 返回 0 這意味着元素ab都是相同的。 因此它將a放在b之前,並通過將舊元素b替換為新元素a再次調用 function 。

但是當您的 function 返回 1 時,這意味着您的元素a在元素b之后。 因此,通過將元素a替換為舊元素a之前的元素,再次調用 function 。

以下代碼顯示了這是如何工作的

final List<int> list = [1, 0, 3, 4, 2 , 6, 8, 2 , 5];
 list.sort((a,b)  {
        print("a : $a, b : $b");
        int result = a.compareTo(b);
        print('result : $result \n');
        return result;
      });

output

a : 1, b : 0
result : 1

a : 1, b : 3
result : -1

a : 3, b : 4
result : -1

a : 4, b : 2
result : 1

a : 3, b : 2
result : 1

a : 1, b : 2
result : -1

a : 4, b : 6
result : -1

a : 6, b : 8
result : -1

a : 8, b : 2
result : 1

a : 6, b : 2
result : 1

a : 4, b : 2
result : 1

a : 3, b : 2
result : 1

a : 2, b : 2
result : 0

a : 8, b : 5
result : 1

a : 6, b : 5
result : 1

a : 4, b : 5
result : -1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM