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
相关产品推荐
相关产品推荐

