mapToSkeleton static method
Maps a widget to its skeleton equivalent with caching and registry support.
Implementation
static Widget mapToSkeleton(
Widget widget,
SkeletonConfig config,
BuildContext? context,
) {
final widgetType = widget.runtimeType;
// Check custom registry first
if (SkeletonRegistry.hasBuilder(widgetType)) {
final builder = SkeletonRegistry.getBuilder(widgetType)!;
final skeleton = builder(widget, config, context);
if (config.debugMode) {
SkeletonDebug.logMapping(
widgetType,
skeleton.runtimeType,
'Custom registry builder',
);
}
return skeleton;
}
// Try cache if enabled
if (config.enableCache) {
final cacheKey = _createCacheKey(widget, config);
final cached = SkeletonCache.get(cacheKey);
if (cached != null) {
if (config.debugMode) {
SkeletonDebug.logCacheHit(widgetType);
}
return cached;
} else if (config.debugMode) {
SkeletonDebug.logCacheMiss(widgetType);
}
}
// Generate skeleton
final skeleton = _generateSkeleton(widget, config, context);
// Cache if enabled
if (config.enableCache) {
final cacheKey = _createCacheKey(widget, config);
SkeletonCache.put(cacheKey, skeleton);
}
return skeleton;
}