搜尋套件、儲存庫與 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 項

原始碼儲存庫

使用此套件的專案

所在榜單