flutter - Dart:使用特殊字符排序列表

标签 flutter dart

我想按本地化的国家/地区名称对 Dart 中的国家/地区列表进行排序。我就是这样做的:

final countryNames = CountryNames.of(context);
_countries.sort((a, b) => 
  (countryNames.data[a.isoCode.toUpperCase()] ?? "").compareTo(
    countryNames.data[b.isoCode.toUpperCase()] ?? ""));

我不担心在 countryNames.data 中找不到的国家——我只是从显示的列表中过滤掉那些国家。问题是在英文中,

奥兰群岛

出现在正向排序列表的底部,在法语和其他特殊字符泛滥的语言中,情况更糟。

在 Dart 中是否有一种惯用的方法来对字符串进行排序,以便更合理地处理特殊字符?

最佳答案

您必须在常规字符和带变音符号的字符之间创建映射,并在比较中使用它,以便将“Åland Islands”视为“Aland Islands”以进行比较。

看起来其他人已经这样做并将其作为一个包发布:https://pub.dev/packages/diacritic

关于flutter - Dart:使用特殊字符排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57371812/

相关文章:

flutter - 内置值对象的 setter 是什么

dart - 如何使用get关键字作为类实例方法的名称?

dart - dart:json使用Dart编程语言

dart - Dart apt repo 的 NO_PUBKEY "4EB27DB2A3B88B8B"

dart - 如何在一个 HTML 中执行两个 dart 代码

flutter - Flutter APK构建Android资源链接失败的振动包

firebase - Flutter android_alarm_manager 没有 Firebase 身份验证

dart - 在 Flutter 中,在 pubspec.yaml 文件中添加包的最佳方法是什么?

firebase - 将Firebase嵌套 map 转换为List <Object>

flutter - 标签栏,每个标签具有唯一操作