native_natural_sort 0.1.2 copy "native_natural_sort: ^0.1.2" to clipboard
native_natural_sort: ^0.1.2 copied to clipboard

Locale-aware, numeric-aware natural string sorting for Flutter using each platform's native collation engine.

native_natural_sort #

Package Likes Popularity Points

Locale-aware, numeric-aware natural string sorting for Flutter using each platform's native collation engine.

Features #

  • ✅ Cross-platform: Android, iOS, macOS, Linux, Windows
  • ✅ Locale-aware sorting via each platform's native collation engine
  • ✅ Numeric-aware natural sort (e.g. file2 < file10)
  • ✅ Sort-time locale and direction overrides
  • ✅ Dual Windows backends: Pigeon (CompareStringEx) or FFI (ICU)
  • ✅ Direct FFI access via IcuCollation for advanced use cases

Getting started #

Add dependency with flutter pub add command #

flutter pub add native_natural_sort

Or add below line to pubspec.yaml #

dependencies:
  ...
  native_natural_sort: any  # or specific version

Then run flutter pub get.

Usage #

import 'package:native_natural_sort/native_natural_sort.dart';

final sort = NativeSort();
await sort.config(SortOptions());
final sorted = await sort.sort([
  SortItem(id: 'a', value: 'file10.txt'),
  SortItem(id: 'b', value: 'file2.txt'),
  SortItem(id: 'c', value: 'file1.txt'),
]);
// sorted: [c, b, a]  (file1 < file2 < file10)

Platform-specific options #

await sort.config(SortOptions(
  android: SortOptionsAndroid(
    locale: Locale('zh'),
    direction: SortDirection.descending,
  ),
  windows: SortOptionsWindows(
    locale: Locale('en'),
    sort: WindowsSort.ffi(),  // or WindowsSort.pigeon()
  ),
));

Sort-time overrides #

final sorted = await sort.sort(
  items,
  locale: Locale('fr'),
  direction: SortDirection.descending,
);

Windows backend selection #

Backend Technology Notes
WindowsSort.ffi() OS-bundled ICU DLL Default
WindowsSort.pigeon() CompareStringEx (Win32)

Direct FFI access #

import 'package:native_natural_sort/native_natural_sort.dart';

final loader = MyCollationLibraryLoader(); // see Linux/Windows FFI loaders
await loader.init();
final collator = loader.collator('en');
final sorted = collator.sort(
  items: ['file10.txt', 'file2.txt', 'file1.txt'],
  idOf: (s) => s,
  valueOf: (s) => s,
);

For more examples, see the integration tests.

Architecture #

NativeSortService (unified Dart API)
├── Android   → Pigeon → android.icu.text.Collator
├── iOS       → Pigeon → localizedStandardCompare
├── macOS     → Pigeon → localizedStandardCompare
├── Linux     → Dart FFI → system libicui18n
└── Windows   → Pigeon (CompareStringEx) or FFI (ICU)

Development #

# Regenerate platform channel code
make gen

# Run analysis
make analyze

# Run tests
make test

"Buy Me A Coffee" Alipay WechatPay

ETH BTC

License #

This project is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Copyright 2026 Fries_I23

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
1
likes
0
points
343
downloads

Publisher

verified publisherfriesi23.icu

Weekly Downloads

Locale-aware, numeric-aware natural string sorting for Flutter using each platform's native collation engine.

Repository (GitHub)
View/report issues

Topics

#sorting #flutter-plugin #cross-platform #i18n #locale

License

unknown (license)

Dependencies

ffi, flutter, meta

More

Packages that depend on native_natural_sort

Packages that implement native_natural_sort