93

WebSocketチャットを作成します。ユーザーの一意のIDを生成する方法は?

今私はこのコードを使用します:

id = new DateTime.now().millisecondsSinceEpoch;

これ以上のきちんとした解決策はありますか?

4

5 に答える 5

149

1.UUIDパブパッケージがあります。

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

使用例:

import 'package:uuid/uuid.dart';

// Create uuid object
var uuid = 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にはdartGUIDジェネレーターがあります

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

明らかなライセンスがないため、ここに関数srcを直接投稿しませんが、使用例は次のとおりです。

final String uuid = GUIDGen.generate();
于 2013-03-21T13:49:51.587 に答える
53

UniqueKey();2020年には、組み込みのクラスであることができます。

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

ノート

それ自体と等しいだけのキー。

これは、constコンストラクターを使用して作成することはできません。これは、インスタンス化されたすべてのキーが同じインスタンスであり、したがって一意ではないことを意味するためです。

于 2020-02-16T12:30:00.417 に答える
7

uuidの他に、これを試して小さな一意のキーを生成することもできます。

https://pub.dev/packages/nanoid

彼らは衝突計算機さえ持っています:

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

于 2021-04-11T07:07:46.537 に答える
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);
}
于 2020-05-15T12:59:04.837 に答える
0

https://pub.dev/packages/xidもあります。これはロックフリーで、1秒あたりおよびホスト/プロセスごとに16,777,216(24ビット)の一意のIDが保証されたUnicityを備えています。

import 'package:xid/xid.dart';

void main() {
  var xid = Xid();
  print('generated id: $xid');

}

于 2021-12-21T17:42:30.533 に答える