飞镖:按双倍排序地图列表

时间:2019-11-20 19:51:11

标签: flutter dart

我有一个要整理的dart地图列表。

我使用的列表:

List<myModel> myList; 

(内部有地图):

(我创建了一个名为“ myModel”的模型,因此,如果我想获取视图,则可以使用:myList [index] .views来获取地图的视图。)

我尝试了以下代码:

setState(() {
        filteredList = SplayTreeMap.from(
            myList,
            (a, b) => int.parse(myList[a].views)
                .compareTo(int.parse(myList[b].views)));
      });

(我想按从高到低的顺序对视图进行排序)。

但是我得到这个错误:

error: A value of type 'SplayTreeMap' can't be assigned to a variable of type 'List<myModel>'.

我在做什么错了?

谢谢!

编辑:

我以此方式“查询”我的列表。

    filteredList = myList
        .where((snapshot) => snapshot.views > 0)
        .toList();

这有效...

是否有可能进行这种排序?

1 个答案:

答案 0 :(得分:1)

您不能将try (FileOutputStream out = new FileOutputStream(filename)) { //where filename is your path location file bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); } catch (IOException e) { e.printStackTrace(); } 传递给List

请参见documentation

SplayTreeMap.from(...)

您需要使用SplayTreeMap.from(Map other, [int compare(K key1 K key2), bool isValidKey(dynamic potentialKey)]) 或其他方式使用Mapdocumentation):

SplayTreeMap.fromIterable(...)

您可以通过以下方式实现:

SplayTreeMap.fromIterable(Iterable iterable, {K key(dynamic element), V value(dynamic element), int compare(K key1 K key2), bool isValidKey(dynamic potentialKey)})

以上是示例,请根据需要进行调整。

编辑2:
进行修改后,您可以执行以下操作:

final filteredList = 
    SplayTreeMap.fromIterable(
      myList,
      key: (m) => m,
      value: (m) => m.views,
      compare: (a, b) => 
        int.parse(a.views).compareTo(int.parse(b.views))
    );