fix: reduce widget tree depth

This commit is contained in:
edde746
2026-02-24 02:40:04 +01:00
parent 9528b8f61a
commit d1d5b808bb
12 changed files with 555 additions and 554 deletions
+15 -2
View File
@@ -72,9 +72,22 @@ class FocusBuilders {
double borderRadius = FocusTheme.defaultBorderRadius,
required Widget child,
}) {
final isKeyboardMode = InputModeTracker.isKeyboardMode(context);
// In touch mode, no item ever shows focus effects — skip animated wrappers
// entirely. This saves ~2 element levels per card on ARM32 Android phones.
if (!isKeyboardMode) {
final gestureWidget = (onTap != null || onLongPress != null)
? GestureDetector(onTap: onTap, onLongPress: onLongPress, child: child)
: child;
if (focusNode != null && onKeyEvent != null) {
return Focus(focusNode: focusNode, onKeyEvent: onKeyEvent, child: gestureWidget);
}
return gestureWidget;
}
final duration = FocusTheme.getAnimationDuration(context);
// Only show focus effects during keyboard/d-pad navigation
final showFocus = isFocused && InputModeTracker.isKeyboardMode(context);
final showFocus = isFocused && isKeyboardMode;
final focusedWidget = AnimatedScale(
scale: showFocus ? FocusTheme.focusScale : 1.0,