Flutter唯一标识符生成插件id_gen的使用
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
更多关于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');
}
注意事项
- 上述代码需要在异步函数中运行,因为生成唯一标识符的方法都是异步的。
uuidv5
方法需要一个命名空间和一个名称,命名空间通常也是一个UUID。shortId
方法生成的是Base64编码的短标识符,长度和复杂性可以根据需要调整。randomInt
和randomUUIDString
方法分别生成随机的整数和字符串标识符。
完整示例
以下是一个完整的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界面上显示。希望这个示例对你有所帮助!