likes
comments
collection
share

【FlutterUtilCode】Flutter工具篇之UuidUtils

作者站长头像
站长
· 阅读数 10

前言

FlutterUtilCode 是一个 Flutter 工具类集合插件,封装了常用的工具类函数,方便开发者调用。

本篇是 Flutter工具篇之UuidUtils,系列文章内容主要介绍插件中工具类的功能、用法和代码实现等,感兴趣的同学可以持续关注。

FlutterUtilCode 系列(一)—— Flutter工具篇之LogUtils、SharedPerfsUtils

FlutterUtilCode 系列(二)—— Flutter工具篇之ToastUtils

FlutterUtilCode 系列(三)—— Flutter工具篇之UuidUtils

UUID工具类-UuidUtils

什么是 uuid 呢?简单来说就是根据时间、随机数、特定文本等不同的数据样本生成一串随机数,并且这串随机数理论上是不会重复的。一般被我们用来做用户身份的验证、设备唯一标识等认证信息,相对来说对我们还是非常重要的。

这里我们通过 uuid 插件来实现 UUID 工具类。uuid 插件也是一个在 pub 上非常流行的库,Likes 达到 1.6K 广受开发者好评。

【FlutterUtilCode】Flutter工具篇之UuidUtils

由于 uuid 库的 Api 已经非常简洁了,所以我们的 UuidUtils 工具类仅仅进行简单的封装。代码如下:

///  Name: UUID工具类
///  基于 [uuid](https://pub.dev/packages/uuid)
///  Created by Fitem on 2023/6/4
class UuidUtils {

  /// 获取uuid
  /// 基于uuid v1 + uuid v4 内容通过 getUuidV5 生成的uuid
  /// 例如:c4a760a8-dbcf-5254-a0d9-6a4474bd1b62
  static String getUuid(){
    return getUuidV5(getUuidV1() + getUuidV4());
  }

  /// 获取uuid v1
  /// 基于当前时间生成的uuid
  /// 例如:6c84fb90-12c4-11e1-840d-7b25c5ee775a
  static String getUuidV1() {
    var uuid = const Uuid();
    var v1 = uuid.v1();
    return v1;
  }

  /// 获取uuid v4
  /// 基于mathRNG随机数生成的uuid
  /// 例如:110ec58a-a0f2-4ac4-8393-c866d813b8d1
  static String getUuidV4() {
    var uuid = const Uuid();
    var v4 = uuid.v4();
    return v4;
  }

  /// 获取uuid v5
  /// 基于 namespace + 内容 生成的uuid
  /// 例如:c4a760a8-dbcf-5254-a0d9-6a4474bd1b62
  static String getUuidV5(String content) {
    var uuid = const Uuid();
    var v5 = uuid.v5(Uuid.NAMESPACE_URL, content);
    return v5;
  }
}

UuidUtils 提供了 4个 对外的方法:

  1. UuidV1 :基于当前时间来生成 UUID 字符串。
  2. UuidV4 :基于 mathRNG 随机数生成 UUID 字符串。
  3. UuidV5 :基于 namespace + 内容 生成 UUID 字符串。
  4. Uuid :基于 UuidV1 + UuidV4 内容,并且通过 UuidV5 来生成,增强其唯一性。

案例:

// uuid
UuidUtils.getUuid()
// uuid v1
UuidUtils.getUuidV1()
// uuid v4
UuidUtils.getUuidV4()
// uuid v5
UuidUtils.getUuidV5('uuid')

运行结果:

【FlutterUtilCode】Flutter工具篇之UuidUtils

结语

好了,今天的工具类整理文章就到这里,目前插件已发布到 Pub 中,欢迎大家体验。

如果觉得这篇文章对你有所帮助的话,不要忘记一键三连哦,大家的点赞是我更新的动力🥰。

Pub: flutter_util_code

项目源码:FlutterUtilCode

使用案例:Example