安装
flutter pub add uuid
开始
说明
- 打开命令行并 cd 到您的项目根文件夹
- 在您的 pubspec 中,将 dart-uuid 的条目添加到您的依赖项中(示例如下)
- 发布安装
- 如果你想运行测试,进入 packages/dart-uuid/ 并运行 'dart test/uuid_test.dart'
发布规范
有 2 个选项。直接来自 git,或来自 pub.dartlang.org
pub.dartlang.org:(如果你总是想要最新的,你可以使用'any'而不是版本)
dependencies: uuid: 3.0.6 import 'package:uuid/uuid.dart'; var uuid = Uuid();
然后创建一些ID ...
// 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'
接口
Uuid({Map<String, dynamic> options: null}) -> Uuid (Constructor)
构造函数支持设置一些全局 RNG 序列,因此您不必在 v4 或 v5 的每个函数调用中指定它们
options
- (Map<String, dynamic>) 要应用的可选 uuid 状态。属性可能包括:grng
- (功能)随机#生成器用作全局rng函数。一个自定义函数,它返回一个字节值列表 [16] 或提供的 2 个字节值中的 1 个。gNamedArgs
- (Map<Symbol, dynamic>) 要传递给全局 rng 函数的参数和值。gPositionalArgs
- (列表)全局 rng 函数的位置参数,如果有的话。v1rng
- (功能)随机#生成器用作v1种子的rng函数。一个自定义函数,它返回一个字节值列表 [16] 或提供的 2 个字节值中的 1 个。v1rngNamedArgs
- (Map<Symbol, dynamic>) 要传递给 v1 rng 函数的参数和值。v1rngPositionalArgs
- (列表)v1 rng 函数的位置参数,如果有的话。
默认值为Uuid.mathRNG
示例:全局使用 CryptoRNG
var uuid = Uuid(options: { 'grng': UuidUtil.cryptoRNG }) // Generate a v4 (random) id that will use cryptRNG for its rng function uuid.v4();
uuid.v1({Map<String, dynamic> options: null) -> String
uuid.v1obj({Map<String, dynamic> options: null) -> UuidValue
uuid.v1buffer(列表
生成并返回 RFC4122 v1(基于时间戳)UUID。
options
- (Map<String, dynamic>) 要应用的可选 uuid 状态。属性可能包括:node
- (列表clockseq
- (0 - 0x3fff 之间的数字)RFC 时钟序列。默认值:一个 内部 (内部) 使用维护的clockseq。msecs
- (数字)自 unix 以来的时间(以毫秒为单位) 时代 (时代) . 默认值:使用当前时间。nsecs
- (0-9999 之间的数字)额外时间,以 100- 纳秒 (纳秒) 单位。忽略如果msecs
是 未指定 (不详) . 默认值:根据 4.2.1.2 使用内部 uuid 计数器。
buffer
- (列表offset``buffer
- (Int)开始写入的起始索引。
v1() 返回 uuid 的字符串表示形式。
v1buffer() 返回一个列表
v1obj() 返回一个 UuidValue,它有一个验证检查和一些包装字符串的内部函数。
示例:使用完全指定的选项生成字符串 UUID
uuid.v1(options: { 'node': [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], 'clockSeq': 0x1234, 'mSecs': new DateTime.utc(2011,11,01).millisecondsSinceEpoch, 'nSecs': 5678 }) // -> "710b962e-041c-11e1-9234-0123456789ab"
示例:就地生成两个二进制 ID
// Generate two ids in an array var myBuffer = new List(32); // -> [] uuid.v1buffer(myBuffer); // -> [115, 189, 5, 128, 201, 91, 17, 225, 146, 52, 109, 0, 9, 0, 52, 128, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] uuid.v1buffer(myBuffer, offset: 16); // -> [115, 189, 5, 128, 201, 91, 17, 225, 146, 52, 109, 0, 9, 0, 52, 128, 115, 189, 5, 129, 201, 91, 17, 225, 146, 52, 109, 0, 9, 0, 52, 128] // Optionally use uuid.unparse() to get stringify the ids uuid.unparse(myBuffer); // -> '73bd0580-c95b-11e1-9234-6d0009003480' uuid.unparse(myBuffer, offset: 16) // -> '73bd0581-c95b-11e1-9234-6d0009003480'
示例:UuidValue 用法
uuidValue = uuid.v1Obj(options: { 'node': [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], 'clockSeq': 0x1234, 'mSecs': new DateTime.utc(2011,11,01).millisecondsSinceEpoch, 'nSecs': 5678 }) // -> UuidValue{uuid: '710b962e-041c-11e1-9234-0123456789ab'} print(uuidValue) -> // -> '710b962e-041c-11e1-9234-0123456789ab' uuidValue.toBytes() -> // -> [...]
uuid.v4({Map<String, dynamic> options: null}) -> String
uuid.v4obj({Map<String, dynamic> options: null}) -> UuidValue
uuid.v4buffer(列表
生成并返回 RFC4122 v4 UUID。
options
- (Map<String, dynamic>) 要应用的可选 uuid 状态。属性可能包括:random
- (Number[16]) 16 个数字 (0-255) 的列表,用于代替 随机 (常) 生成的值rng
- (功能)随机#生成器使用。一个自定义函数,它返回一个字节值列表 [16] 或提供的 2 个字节值中的 1 个。namedArgs
- (Map<Symbol, dynamic>) 要传递给函数的参数和值。positionalArgs
- (列表)函数的位置参数。如果有的话。
buffer
- (列表offset``buffer
- (数字)开始写入的起始索引。
v4() 返回 uuid 的字符串表示形式。
v4buffer() 返回一个列表
v4obj() 返回一个 UuidValue,它有一个验证检查和一些包装字符串的内部函数。
示例:使用不同的 RNG 方法生成字符串 UUID
import 'package:uuid/uuid_util.dart'; uuid.v4(options: { 'rng': UuidUtil.cryptoRNG }); // -> "109156be-c4fb-41ea-b1b4-efe1671c5836"
示例:使用不同的 RNG 方法和命名参数生成字符串 UUID
import 'package:uuid/uuid_util.dart'; uuid.v4(options: { 'rng': UuidUtil.mathRNG, 'namedArgs': new Map.fromIterables([const Symbol('seed')],[1]) }); // -> "09a91894-e93f-4141-a3ec-82eb32f2a3ef"
示例:使用不同的 RNG 方法和位置参数生成字符串 UUID
import 'package:uuid/uuid_util.dart'; uuid.v4(options: { 'rng': UuidUtil.cryptoRNG, 'positionalArgs': [1] }); // -> "09a91894-e93f-4141-a3ec-82eb32f2a3ef"
示例:使用完全指定的选项生成字符串 UUID
uuid.v4(options: { 'random': [ 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 ] }); // -> "109156be-c4fb-41ea-b1b4-efe1671c5836"
示例:在单个缓冲区中生成两个 ID
var myBuffer = new List(32); uuid.v4buffer(myBuffer); uuid.v4buffer(myBuffer, offset: 16);
示例:UuidValue 用法
uuidValue = uuid.v4obj(options: { 'random': [ 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 ] }) // -> UuidValue{uuid: '109156be-c4fb-41ea-b1b4-efe1671c5836'} print(uuidValue) -> // -> '109156be-c4fb-41ea-b1b4-efe1671c5836' uuidValue.toBytes() -> // -> [...]
uuid.v5(String namespace, String name, {Map<String, dynamic> options: null}) -> String
uuid.v5obj(String namespace, String name, {Map<String, dynamic> options: null}) -> UuidValue
uuid.v5buffer(字符串命名空间,字符串名称,列表
生成并返回 RFC4122 v5 UUID。
options
- (Map<String, dynamic>) 要应用的可选 uuid 状态。属性可能包括:randomNamespace
-(布尔值)默认为真。如果您想要 v4 生成的命名空间 (true) 或 NAMESPACE_NIL (false),则返回
buffer
- (列表offset``buffer
- (数字)开始写入的起始索引。
v5() 返回 uuid 的字符串表示形式。
v5buffer() 返回一个列表
v5obj() 返回一个 UuidValue,它有一个验证检查和一些包装字符串的内部函数。
示例:使用完全指定的选项生成字符串 UUID
uuid.v5(Uuid.NAMESPACE_URL, 'www.google.com'); // -> "c74a196f-f19d-5ea9-bffd-a2742432fc9c"
示例:在单个缓冲区中生成两个 ID
var myBuffer = new List(32); uuid.v5buffer(Uuid.NAMESPACE_URL, 'www.google.com', myBuffer); uuid.v5buffer(Uuid.NAMESPACE_URL, 'www.google.com', myBuffer, offset: 16);
示例:UuidValue 用法
uuidValue = uuid.v5obj(Uuid.NAMESPACE_URL, 'www.google.com'); // -> UuidValue(uuid: "c74a196f-f19d-5ea9-bffd-a2742432fc9c") print(uuidValue) -> // -> 'c74a196f-f19d-5ea9-bffd-a2742432fc9c' uuidValue.toBytes() -> // -> [...]
uuid.parse(字符串 uuid,{列表
uuid.parseAsByteList(字符串 uuid,{列表
uuid.unparse(列表
解析和反解析 UUID
id
- (String) UUID(-like) 字符串buffer
- (列表)要写入 UUID 字节的数组或缓冲区。默认值:使用新的数组或缓冲区offset``buffer
- (Int | Number)开始写入的起始索引。默认值:0validate
- (bool, default: true) 允许您禁用 UUID 验证,这对于 Microsoft GUID 废话非常有用。
抛出: parse() -> FormatException - 当不是有效的 UUID 时 unparse() -> 异常 - 当列表内容的长度不是 16 时
解析和反解析 UUID 字符串的示例
var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> [121, 127, 240, 67, 17, 235, 17, 225, 128, 214, 81, 9, 152, 117, 93, 16] var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'