搜索插件、代码仓与 APP 分类

插件详情v4.6.0

uuid

RFC4122 (v1、v4、v5、v6、v7、v8) UUID 生成器和解析器,适用于 Dart

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
1890万
喜欢数
2740
Pub 分数
160

安装插件

flutter pub add uuid

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

uuid 包为 Dart 提供了对 RFC4122 UUID 标准(v1、v4、v5、v6、v7、v8)的全面实现,可安全可靠地生成和解析通用唯一标识符。它支持所有主要平台,包括 Android、iOS、Web、macOS、Windows 和 Linux。该包非常适合需要为数据记录、会话管理或分布式系统生成唯一标识符的应用程序。通过简洁直观的 API,它简化了在 Flutter 和 Dart 项目中的集成。

适合场景

  • 为数据库记录生成唯一ID
  • 创建会话令牌
  • 在分布式系统中识别实体
  • 确保跨服务的数据完整性
  • 支持离线优先的应用程序状态管理

主要特点

  • 支持多种UUID版本(v1、v4、v5、v6、v7、v8)
  • 跨平台兼容性
  • 强大的解析和验证
  • 简单、流畅的 API
  • 符合 RFC4122

适合对象

  • 使用 Dart 的后端服务
  • Flutter 应用需要唯一标识符
  • 跨设备数据同步
  • 安全敏感的应用程序
  • 需要标准化ID格式的应用程序

使用建议

  • 根据使用场景确保选择正确的UUID版本
  • 注意 v1 UUID 带来的隐私问题
  • 验证解析用户输入时的UUID格式
  • 避免在性能关键路径中生成大量 v1 UUID
  • 检查更新,因为RFC标准正在持续演进

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

uuid

Version 4.x.x is a complete redesign of the underlying setup, but tries to be API compatible or similar to 3.x.

Build Status

Simple, fast generation of RFC4122 and RFC9562 UUIDs.

Features:

  • Generate RFC4122 version 1, version 4, or version 5 UUIDs
  • Supports RFC9562 version 6, version 7, and version 8
  • Optional monotonic version 7 generator
  • Runs in web, server, and flutter
  • Cryptographically strong random number generation on all platforms
  • Validate and parse generic 128-bit hexadecimal values without enforcing UUID version or variant bits
  • Documentation

Getting Started

Instructions
  1. Open a command line and cd to your projects root folder
  2. In your pubspec, add an entry for dart-uuid to your dependencies (example below)
  3. pub install
  4. If you wish to run tests, go into packages/dart-uuid/ and run 'dart test'
Pubspec
dependencies:
  uuid: ^4.6.0
import 'package:uuid/uuid.dart';

var uuid = Uuid();

Then create some ids ...

// 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(Namespace.url.value, 'www.google.com'); // -> 'c74a196f-f19d-5ea9-bffd-a2742432fc9c'
Structural 128-bit parsing

Use the explicit format APIs when the input must be a 128-bit hexadecimal value but UUID version and variant bits should not be enforced.

const value = '019f13f5-53cb-b219-ca3e-4b569376f32b';

Uuid.isValidUUIDFormat(fromString: value); // true
Uuid.parseHex128(value); // 16 bytes

const withoutDashes = '019f13f553cbb219ca3e4b569376f32b';
Uuid.parseHex128(withoutDashes, noDashes: true); // 16 bytes
Monotonic v7

uuid.v7() fills everything after the millisecond timestamp with random bits, so ids created in the same millisecond have no defined order. UuidV7Monotonic replaces the most significant of those random bits with a 16-bit counter (RFC 9562 §6.2, Method 1), so ids from one generator sort in creation order under an ordinary string comparison (or byte comparison if parsed).

import 'package:uuid/uuid.dart';
import 'package:uuid/v7monotonic.dart';

// Plain v7, both created in the same millisecond. Creation order and sort
// order happen to disagree.
const uuid = Uuid();
uuid.v7(); // -> '019fcd85-9fac-7f64-8711-97a4665f1adc'
uuid.v7(); // -> '019fcd85-9fac-715d-80d0-556404fa23ea'

// Monotonic, also within one millisecond. The counter defines the order.
final generator = UuidV7Monotonic();
generator.generate(); // -> '019fcd85-9fb3-7488-a625-f7a830c2dcf7'
generator.generate(); // -> '019fcd85-9fb3-7488-a87c-0c31456d733b'

Import the generator directly; it is not exported from uuid.dart.

Some limits of the monotonic generator:

  1. Ordering only holds within one generator instance. v7 cannot order concurrent generators against each other without shared state.
  2. Ids strictly increase unless the clock moves backward by more than 10 seconds, which resets ordering to the new clock reading. Ids stay unique across the reset.
  3. Ids are not secret tokens. The counter increments by exactly +1 within a millisecond, so an observer holding one id can predict the next. Use v4 if unguessability matters.

Documentation

For documentation, please visit the Documentation page. Examples are included for most functions and classes.

For more complex examples and other usages, please look at the tests.

Release notes

See CHANGELOG

所属分类

依赖

依赖清单 2 项

源码仓库

使用此插件的项目

所在榜单