dart - 在 Dart 中将项目排序到列表前面

标签 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”始终排在最前面。这怎么可能?

最佳答案

您只想在排序函数中为“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);
  },
)

关于dart - 在 Dart 中将项目排序到列表前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51848065/

相关文章:

svg - Dart 创建和转换 SVG 路径

firebase - Flutter/Firebase - List<dynamic> 没有实例 getter 'documents'

list - 如何在Dart中使用默认的可修改列表字段实例化对象

dart - 改变 AppBar 的高度

pdf - 打印通过 Flutter/Dart 中的网络服务下载的 pdf

flutter - 屏幕一侧的绿色 strip 有 video_player 抖动

keyboard - 当键盘出现时,Flutter 小部件会调整大小。如何防止这种情况?

Flutter 设置状态不更新 bottomsheet 函数中的变量值

dart - 在Dart中使用is-operator和运行时类型有什么区别

class - 在 Flutter/dart 中访问其他 Class 方法