Dart/Flutter中是否存在与Java Collator功能一致的插件或方法?
Dart/Flutter 中实现区域语言排序的方案
Dart生态中存在完全对标Java Collator能力的实现,无需使用非官方第三方插件即可实现按指定地区语言规则排序,避开直接基于Unicode编码排序的问题。
官方实现方案:intl 包的 Collator 类
Dart官方维护的intl包中内置了Collator类,功能和Java的Collator完全对齐,支持全球主流语言区域的排序规则。
使用步骤
- 首先添加依赖,在项目根目录执行命令:
flutter pub add intl
纯Dart项目执行:dart pub add intl - 导入对应的类:
import 'package:intl/intl.dart'; - 按指定区域排序的代码示例:
// 初始化简体中文区域的Collator final zhCollator = Collator('zh_CN'); List<String> cityList = ['北京', '上海', '广州', '深圳', '成都']; // 调用Collator的compare方法作为排序规则 cityList.sort(zhCollator.compare); print(cityList); // 输出符合中文拼音排序的结果:[北京, 成都, 广州, 上海, 深圳]
- 支持自定义排序强度,比如忽略大小写、忽略重音符号:
// 初始化英文区域的Collator,设置为忽略大小写的排序强度 final enCollator = Collator('en_US')..strength = Collator.PRIMARY; List<String> wordList = ['apple', 'Banana', 'cherry', 'Date']; wordList.sort(enCollator.compare); print(wordList); // 输出:[apple, Banana, cherry, Date]
注意事项
- 目前
intl包已经覆盖了全球绝大多数主流语言区域的排序规则,小众区域规则可以通过升级intl包版本获取支持。 - 纯Dart服务端项目也可以直接使用该类,无Flutter框架依赖。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

