You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter列表按字母排序报错:String无'<>'实例方法求助

解决Flutter中列表按字母排序的字符串比较异常问题

嘿,这个问题我之前也踩过坑!你之所以会碰到String不存在'<>'实例方法的异常,是因为Dart里的字符串不能像JavaScript那样直接用<和>运算符来比较大小——JS里允许直接用关系运算符比较字符串的Unicode码点,但Dart的String类并没有实现这些运算符,所以调用它们就会报错。

你的排序逻辑思路是对的,只需要把字符串比较的方式换成Dart支持的写法就行。Dart的String类提供了compareTo()方法,它的返回值正好符合sort方法的要求:

  • 如果当前字符串排在参数字符串之前,返回-1
  • 如果两个字符串相等,返回0
  • 如果当前字符串排在参数字符串之后,返回1

所以你只需要把原来的三元表达式替换成compareTo()调用就可以了,修正后的代码如下:

data.sort((a, b) {
  var aName = a['name'].toLowerCase();
  var bName = b['name'].toLowerCase();
  return aName.compareTo(bName);
});

这个写法和你原本的逻辑完全等价,而且更简洁易读。如果之后需要处理中文、多语言这类更复杂的排序场景,可以考虑使用intl包提供的本地化排序工具,但如果只是英文的字母排序,上面的代码就足够解决问题啦~

内容的提问来源于stack exchange,提问作者Kevin Walter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:59