Easily generate lexicographical sort for efficient reordering list item.


  • Easily generate lexicographical rank between two rank
  • Easily change of generated rank length with your favorite English letter
  • Able to generate a list of rank for re-balancing process or initial ranking
  • Have a method to detect if ranking exceed some threshold


  1. To generate a rank, first create an instance of LexoRank and call getRankBetween with defined first and second rank

const lexoRank = LexoRank();
final rank = lexoRank.getRankBetween(firstRank: 'aaaa', secondRank: 'cccc');
print(rank); //bbbb

the first rank should be lower than the second rank, if you are unsure just pass reorderPosition when creating LexoRank instance.

  1. To generate a list of rank
final itemsRank = lexoRank.generateInitialRank(sizeOfItems: 100);

you can customize it by providing:

  • sizeOfItems indicate number of ranks that must be generated.
  • rankLength: specify initial base rank letter size, default to 5.
  • startRankLetter: specify start letter to generate the initial the base rank, default is ‘a’.
  • endRankLetter: specify end letter to generate the initial the base rank, default is ‘z’.
  1. To check if a list of ranks exceed the limit

final stats = lexoRank.shouldRebalanced(items, maxRankLength: 5);


Please file any issues, bugs or feature request as an issue on our GitHub page.


If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature or you’d like an easier or better way to do something), consider opening a pull request.


View Github