Flutter中如何生成15位随机数字
Flutter 生成15位随机数字追踪号实现方案
注意事项
- 15位追踪号需确保首位不为0,避免出现有效位数不足的问题
- 生成逻辑需结合业务侧做去重校验,避免出现重复追踪号影响业务
基础实现方案
无需引入第三方依赖,直接使用 Dart 内置的Random类即可实现:
- 首先导入系统库:
import 'dart:math'; - 封装生成函数:
String generate15DigitTrackingNumber() { final random = Random(); // 首位生成1-9的随机数,避免开头为0 int firstDigit = 1 + random.nextInt(9); // 剩余14位每位生成0-9的随机数,拼接为字符串 String otherDigits = List.generate(14, (_) => random.nextInt(10).toString()).join(); return '$firstDigit$otherDigits'; }
调用该函数即可直接得到符合要求的15位数字追踪号。
低重复优化方案
如果业务货件量级较大,可加入时间戳维度降低重复概率,示例代码如下:
String generateLowRepeatTrackingNumber() { final random = Random(); // 取当前毫秒时间戳的后6位 String timeSegment = DateTime.now().millisecondsSinceEpoch.toString().substring(7); // 生成9位随机数,首位不为0 int firstRandom = 1 + random.nextInt(9); String randomSegment = firstRandom.toString() + List.generate(8, (_) => random.nextInt(10).toString()).join(); // 拼接后总长度为6+9=15位 return '$timeSegment$randomSegment'; }
该方案结合了时间维度,相同时间点生成重复号码的概率极低,适合大规模业务场景使用。
额外建议:不管用哪种生成方案,最终入库前都要校验追踪号是否已存在,存在则重新生成,完全避免重复问题。
内容的提问来源于stack exchange,提问作者KTJ
相关产品推荐
相关产品推荐

