putIfAbsent<T extends Object> method

T putIfAbsent<T extends Object>({
  1. Object? key,
  2. required T ifAbsent(),
  3. LifecycleExtDataOnDestroy<T>? onDestroy,
})

根据Type + key获取,如果不存在则创建信息 如果已经存在则只返回之前的值

Implementation

T putIfAbsent<T extends Object>(
    {Object? key,
    required T Function() ifAbsent,
    LifecycleExtDataOnDestroy<T>? onDestroy}) {
  if (_isDestroyed) {
    throw Exception('extData has been destroyed.');
  }
  return _data
      .putIfAbsent(
          _genKey<T>(key: key), () => _ExtDataEntry<T>(ifAbsent(), onDestroy))
      .data;
}