如何生成唯一标识符,Flutter。

4

我正在使用Flutter本地通知插件开发一款带有通知功能的待办事项应用,我该如何生成一个唯一的整数作为特定待办事项的标识符,使得我可以使用这个唯一的整数取消该待办事项的通知。

5个回答

12

您可以使用UniqueKey().hashCode()来获取唯一的int
例如:

final notificationId = UniqueKey().hashCode()
// or you can use DateTime.now().millisecondsSinceEpoch
...

我知道唯一键不起作用,但忘记尝试哈希码了,无论如何还是谢谢。 - Rohith Nambiar

2
我提到了一些获取唯一标识符的方法:-

可以使用时间戳,像这样

DateTime.now().millisecondsSinceEpoch;

在2020年,你可以使用UniqueKey()函数;注意:该函数生成的是只与自身相等的密钥。这不能通过const构造函数创建,因为这意味着所有实例化的密钥都将是同一个实例,因此不会是唯一的。

https://api.flutter.dev/flutter/widgets/UniqueKey-class.html

可以使用无锁的xid包,每秒每个主机/进程保证24位唯一ID的唯一性。
import 'package:xid/xid.dart';

void main() {
  var xid = Xid();
  print('generated id: $xid');

}

1
Uuid不像Flutter通知插件所需的那样返回一个int - Darshan
好的,我会更新我的答案。 - Dipak Ramoliya

0
你可以使用以下的类:
class UuidUtil {
  static int get uuid => DateTime.now().microsecondsSinceEpoch;
}

然后通过以下方式访问:

final id = UuidUtil.uuid;

-2

你可以在这里使用UUID包here

import 'package:uuid/uuid.dart';

 var uuid = Uuid();
 print(uuid.v1());  

 print(uuid.v4()); 

或者也可以参考this


1
这将不会返回所需的 int,这是 Flutter 通知插件的要求。 - Darshan

-3
你可以使用这个包: http://pub.dartlang.org/packages/uuid
import 'package:uuid/uuid.dart';

// Create uuid object
var uuid = Uuid();

// Generate a v1 (time-based) id
uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'

// Generate a v4 (random) id
uuid.v4(); // -> '120ec61a-a0f2-4ac4-8393-c866d813b8d1'


Uuid不像Flutter通知插件所需的那样返回一个int - Darshan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接