我想按本地化的国家/地区名称对Dart中的国家/地区列表进行排序。这就是我的做法:
final countryNames = CountryNames.of(context);
_countries.sort((a, b) =>
(countryNames.data[a.isoCode.toUpperCase()] ?? "").compareTo(
countryNames.data[b.isoCode.toUpperCase()] ?? ""));
我不担心
countryNames.data
中找不到的国家-我只是将它们从显示的列表中过滤掉。问题是用英语,奥兰群岛
出现在前排列表的底部,并且在法语和其他带有特殊字符的语言中,情况甚至更糟。
是否有惯用的方式在Dart中对字符串进行排序,以便更合理地对待特殊字符?
最佳答案
您将必须在常规字符和带有变音符号的字符之间创建一个映射,并在比较中使用它,以便出于比较目的将“ÅlandIslands”视为“Aland Islands”。
似乎其他人已经完成了该任务,并将其作为软件包发布:https://pub.dev/packages/diacritic
关于flutter - Dart:带有特殊字符的排序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57371812/