Flutter唯一标识符生成插件id_gen的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter唯一标识符生成插件 id_gen 的使用

id_gen 是一个用于生成各种类型唯一标识符的Flutter插件。它支持生成UUID、HumanID、递增/递减整数ID以及时间戳ID等。以下是该插件的详细使用方法及示例代码。

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  id_gen: ^最新版本号

然后运行 flutter pub get 来安装插件。

使用示例

1. 生成4个随机UUID

UUID(Universally Unique Identifier)是一种标准的128位格式,用于定义信息在计算机系统中的唯一性。

import 'package:id_gen/id_gen.dart';

void main() {
  print([for (var i = 0; i < 4; ++i) genUuid]);
}

输出示例:

[4c48329b-2c1b-4534-b649-1a462626bcd4, a1afafe2-d57a-46ae-9f27-7e42dc936475,
283ae055-cf4e-4d6d-b505-e2a7d60806d2, 843832d1-d0f0-48e7-8a61-3aa151c2103b]

2. 从语言生成HumanID

HumanID是从文本生成的易于阅读的唯一标识符,支持多种语言如白俄罗斯语、英语和乌克兰语。

import 'package:id_gen/id_gen.dart';
import 'package:id_gen/id_gen_helpers.dart';

void main() {
  const gen = HumanIdGen(options: HumanIdGenOptions(lowerCase: true));
  final hid = gen.get('Тема статті чи назва курсу');
  print(hid);
}

输出示例:

tema-stati-chy-nazva-kursu

3. 生成递增的唯一整数ID

import 'package:id_gen/id_gen.dart';

void main() {
  final gen = TransitIdGen();
  print([for (var i = 0; i < 4; ++i) gen.next]);
}

输出示例:

[1, 2, 3, 4]

4. 生成基于时间的唯一整数ID

可以生成以毫秒或微秒为单位的时间戳ID。

import 'package:id_gen/id_gen.dart';

void main() {
  // 毫秒
  print(genTimeId);
  // 微秒
  print(genTimeIdMicro);
}

输出示例:

1705954581187
1705954581188687

注意:第二个ID不适合存储在JavaScript数字中,因为它超过了53位。

5. 给任意类添加HID和UID

通过混合类 HasStringIdMix 可以为任意类添加HID和UID属性。

import 'package:id_gen/id_gen.dart';

class Quant with HasStringIdMix {
  Quant({String? hid, String? uid}) {
    this.hid = hid;
    this.uid = uid;
  }
}

void main() {
  print(Quant().id);
  print(Quant(hid: 'aerwyna').id);
}

输出示例:

92e6ee3e-537a-4dd3-b4e9-06b8fd366469
aerwyna

完整示例代码

以下是一个完整的示例代码,展示了如何使用 id_gen 插件生成不同类型的唯一标识符:

// ignore_for_file: avoid_print

import 'package:id_gen/id_gen.dart';
import 'package:id_gen/id_gen_helpers.dart';

void main() {
  // 生成随机UUIDs
  print('\ngenerate random UUIDs, helper');
  print([for (var i = 0; i < 4; ++i) genUuid]);

  // 使用原生方法生成UUIDs
  print('\ngenerate random UUIDs, native');
  {
    const gen = UuidGen();
    print([for (var i = 0; i < 4; ++i) gen.next]);
    // 或者直接使用genUuid
    print([for (var i = 0; i < 4; ++i) genUuid]);
  }

  // 生成HumanID
  print('\ngenerate HID from Ukrainian');
  {
    final gen = HumanIdGen(options: HumanIdGenOptions(lowerCase: true));
    final hid = gen.get('Тема статті чи назва курсу');
    print(hid);
  }

  // 生成递增的唯一整数ID
  print('\ngenerate increasing unique integer ID, helper');
  {
    final gen = TransitIdGen();
    print([for (var i = 0; i < 4; ++i) gen.next]);
    // 或者直接使用genTransitId
    print([for (var i = 0; i < 4; ++i) genTransitId]);
  }

  // 生成递减的唯一整数ID
  print('\ngenerate decreasing unique integer ID');
  {
    final gen = TransitIdGen(1050, -50);
    print([for (var i = 0; i < 4; ++i) gen.next]);
  }

  // 生成基于时间的ID
  print('\ngenerate time IDs in milliseconds, helper');
  for (var i = 0; i < 4; ++i) {
    print(genTimeId);
  }

  print('\ngenerate time IDs in microseconds, helper');
  for (var i = 0; i < 4; ++i) {
    print(genTimeIdMicro);
  }
}

更多关于Flutter唯一标识符生成插件id_gen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter唯一标识符生成插件id_gen的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用id_gen插件来生成唯一标识符的代码示例。id_gen插件允许你生成不同类型的唯一标识符,如UUID(通用唯一标识符)等。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加id_gen依赖:

dependencies:
  flutter:
    sdk: flutter
  id_gen: ^3.0.0  # 请检查最新版本号

然后运行flutter pub get来获取依赖。

步骤 2: 导入插件

在你的Dart文件中导入id_gen插件:

import 'package:id_gen/id_gen.dart';

步骤 3: 生成唯一标识符

你可以使用IdGenerator类来生成不同类型的唯一标识符。以下是一些示例代码:

void main() async {
  // 创建IdGenerator实例
  final idGenerator = IdGenerator();

  // 生成UUID v4
  String uuidV4 = await idGenerator.uuidv4();
  print('UUID v4: $uuidV4');

  // 生成UUID v5(需要提供一个命名空间和一个名称)
  String namespace = await idGenerator.uuidv4(); // 你可以使用另一个已知的UUID作为命名空间
  String name = 'exampleName';
  String uuidV5 = await idGenerator.uuidv5(namespace: namespace, name: name);
  print('UUID v5: $uuidV5');

  // 生成一个随机的短标识符(Base64编码)
  String shortId = await idGenerator.shortId();
  print('Short ID: $shortId');

  // 生成一个随机的整数标识符
  int randomInt = await idGenerator.randomInt();
  print('Random Int: $randomInt');

  // 生成一个随机的字符串标识符(由数字和字母组成)
  String randomString = await idGenerator.randomUUIDString();
  print('Random UUID String: $randomString');
}

注意事项

  1. 上述代码需要在异步函数中运行,因为生成唯一标识符的方法都是异步的。
  2. uuidv5方法需要一个命名空间和一个名称,命名空间通常也是一个UUID。
  3. shortId方法生成的是Base64编码的短标识符,长度和复杂性可以根据需要调整。
  4. randomIntrandomUUIDString方法分别生成随机的整数和字符串标识符。

完整示例

以下是一个完整的Flutter应用示例,展示了如何在点击按钮时生成并显示UUID v4:

import 'package:flutter/material.dart';
import 'package:id_gen/id_gen.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter UUID Generator',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _uuid = '';

  void _generateUUID() async {
    final idGenerator = IdGenerator();
    String uuidV4 = await idGenerator.uuidv4();
    setState(() {
      _uuid = uuidV4;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter UUID Generator'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Generated UUID:',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 10),
            Text(
              _uuid,
              style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _generateUUID,
              child: Text('Generate UUID'),
            ),
          ],
        ),
      ),
    );
  }
}

这个示例应用展示了如何使用id_gen插件生成UUID v4,并在Flutter界面上显示。希望这个示例对你有所帮助!

回到顶部