You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter 3.22.1 iOS端UniqueKey.toString()生成异常求助

解决方案

问题原因

Flutter 3.22.1版本中,iOS端UniqueKey的toString()方法实现发生变更,不再返回原有的#xxxx格式字符串,而是输出默认的Instance of 'UniqueKey',Android端的实现未受此影响。

最小改动修复方案

以下几种方式可以在几乎不改动原有逻辑的前提下解决问题:

方案1:利用UniqueKey内部的value属性生成键

UniqueKey内置一个唯一的value对象,通过它的标识生成键能保证唯一性:

final UniqueKey uKey = UniqueKey();
// 方式1:使用value的toString结果
final String keyString = uKey.value.toString();
// 方式2:用哈希值生成和原格式接近的键
// final String keyString = '#${uKey.value.hashCode}';

DocumentReference documentReferencer =
    _mainCollection.doc(userUid).collection('teams').doc(keyString);

方案2:直接使用UniqueKey的哈希值

如果不需要严格匹配原格式,直接取UniqueKey的哈希值也能满足唯一要求:

final String uKey = UniqueKey().hashCode.toString();
DocumentReference documentReferencer =
    _mainCollection.doc(userUid).collection('teams').doc(uKey);

方案3:生成与原格式完全一致的键

若需要保留原有的#xxxx格式,可手动拼接字符串:

final String uKey = '#${UniqueKey().hashCode}';
DocumentReference documentReferencer =
    _mainCollection.doc(userUid).collection('teams').doc(uKey);

备选方案(改动较大)

如果后续计划替换生成逻辑,也可以让Firebase自动生成文档ID,无需手动处理:

DocumentReference documentReferencer =
    _mainCollection.doc(userUid).collection('teams').doc();
// 生成的ID可通过documentReferencer.id获取

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:43:12