如何在Dart中生成唯一ID

时间:2013-03-21 13:15:09

标签: unique dart identity uuid uniqueidentifier

我写websocket聊天。 如何为用户生成唯一ID?

现在我使用这段代码:

id = new DateTime.now().millisecondsSinceEpoch;

有没有更整洁的解决方案?

4 个答案:

答案 0 :(得分:31)

1。有一个UUID pub包:

http://pub.dartlang.org/packages/uuid

示例用法:

// Generate a v1 (time-based) id
uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'

// Generate a v4 (random) id
uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'

// Generate a v5 (namespace-name-sha1-based) id
uuid.v5(uuid.NAMESPACE_URL, 'www.google.com'); // -> 'c74a196f-f19d-5ea9-bffd-a2742432fc9c'

2. 此src有一个dart GUID生成器

https://github.com/MikeMitterer/AndroidIconGenerator.DART/blob/master/lib/src/model/communication/GUIDGen.dart

我不会直接在这里发布函数src,因为它没有明显的许可证,但示例用法如下:

final String uuid = GUIDGen.generate();

答案 1 :(得分:29)

在2020年,您可以进行UniqueKey();这是内置课程:

https://api.flutter.dev/flutter/widgets/UniqueKey-class.html

答案 2 :(得分:2)

除了uuid,你也可以试试这个来生成小的唯一键:

https://pub.dev/packages/nanoid

他们甚至有一个碰撞计算器:

https://zelark.github.io/nano-id-cc/

答案 3 :(得分:0)

如果您喜欢MongoDB样式ID,可以考虑使用这个小包装来帮助创建对象ID:

https://pub.dev/packages/crossplat_objectid

import 'package:bson_objectid/bson_objectid.dart';

main() {
  ObjectId id1 = new ObjectId();
  print(id1.toHexString());

  ObjectId id2 = new ObjectId.fromHexString('54495ad94c934721ede76d90');
  print(id2.timestamp);
  print(id2.machineId);
  print(id2.processId);
  print(id2.counter);
}