首页 > 解决方案 > 在飞镖中生成非常独特的字母和数字组合的功能

问题描述

我正在开发一个带有飞镖和颤振的应用程序,我正在尝试为每个登录的用户创建一个唯一的 ID,我有 3 类用户。

我想为每个使用引用用户类别的字母前缀注册的用户生成一个唯一编号。

例如 1类PH175589 2类MS897841 3 类DR632514

category1 中的任何用户都以PH开头。

category2 中的任何用户都以MS开头。

category3 中的任何用户都以DR开头。

我已经阅读了关于随机函数的内容dart:math,它会生成随机数,但它们并不总是唯一的。如何实现上述示例并确保它始终为每个用户提供一个唯一编号?

标签: flutterdart

解决方案


这应该可以解决问题:

import 'dart:math'; // needed to generate random number

List<String> ids = []; // a list of all the ids to keep track of what is used up;

void main() {
  String id = generateVeryUniqueID(2); // generates id for categories 1-3
  ids.add(id); // adds id to list so that it is not generated later
  print(id);
}

String generateVeryUniqueID(int category) {
  
  String cat = "";
  
  switch(category) {
    case 1: cat="PH"; break;
    case 2: cat="MS"; break;
    case 3: cat="DR"; break;
  }
  
  bool unique = false;
  var rng = new Random();
  
  String numbers = "";
  while(!unique) {
    numbers = "";
    for(var i = 0; i<6; i++) {
      numbers+=rng.nextInt(9).toString();
    }
    if(!ids.contains(cat+numbers)) {
      unique = true;
    }
  }
  return cat+numbers;
}

推荐阅读