create method
Creates a new bloc, or retrieves a cached one
if useCache
is false then a new bloc is created everytime, otherwise
returns a cached bloc if it exists
Implementation
T create({R? arg, bool useCache = true}) {
if (_toInject != null) {
return _toInject!;
}
if (!useCache) {
return _builder(arg);
}
final cacheKey = TypeAndArg(T, arg);
if (_cache.containsKey(cacheKey)) {
return _cache[cacheKey]! as T;
}
final bloc = _builder(arg);
_cache.addAll({cacheKey: bloc});
final numCached = _cache.keys.where((e) => e.type == T).length;
if (numCached > 2) {
_log.warning('you have already cached $numCached ${T}s');
}
return bloc;
}