将项目排序到Dart中列表的前面

时间:2018-08-14 18:52:40

标签: dart flutter

我已经使用dart / flutter按字母顺序对列表进行了排序,

a.value['name'].toString().toLowerCase().compareTo(b.value['name'].toString().toLowerCase());

但是,我也想将列表中的一项排序到最前面,而忽略按字母顺序排序。有谁知道该怎么做?

编辑: 这是我的Firebase动画列表

FirebaseAnimatedList(
      query: query,
      sort: (a, b) {
        return a.value['name'].toString().toLowerCase().compareTo(b.value['name'].toString().toLowerCase());
      },
      padding: EdgeInsets.all(8.0),
      defaultChild: Center(
        child: CircularProgressIndicator(
          valueColor: AlwaysStoppedAnimation<Color>(appTheme.accentColor),
          strokeWidth: 2.0,
        ),
      ),
      itemBuilder: (BuildContext context, DataSnapshot snapshot,
        Animation<double> animation, int index) {
          return Item(index);
      },
    )

例如,我正在对该列表中的人名列表进行排序。但是,我希望始终将某个名称“ Roger”排在首位。这怎么可能?

1 个答案:

答案 0 :(得分:1)

您只想在排序函数中为“ Roger”返回-1和-1:

FirebaseAnimatedList(
  query: query,
  sort: (a, b) {
    if (a == "Roger") return -1;
    if (b == "Roger") return 1;
    return a.value['name'].toString().toLowerCase().compareTo(b.value['name'].toString().toLowerCase());
  },
  padding: EdgeInsets.all(8.0),
  defaultChild: Center(
    child: CircularProgressIndicator(
      valueColor: AlwaysStoppedAnimation<Color>(appTheme.accentColor),
      strokeWidth: 2.0,
    ),
  ),
  itemBuilder: (BuildContext context, DataSnapshot snapshot,
    Animation<double> animation, int index) {
      return Item(index);
  },
)