chore: Improved custom keyboard logic

This commit is contained in:
PartyDonut 2025-10-11 18:46:25 +02:00
parent 07972ea5ee
commit 117d873683
10 changed files with 203 additions and 202 deletions

View file

@ -12,6 +12,7 @@ import 'package:fladder/util/debug_banner.dart';
import 'package:fladder/util/localization_helper.dart';
import 'package:fladder/util/poster_defaults.dart';
import 'package:fladder/util/resolution_checker.dart';
import 'package:fladder/widgets/keyboard/slide_in_keyboard.dart';
enum InputDevice {
touch,
@ -209,32 +210,40 @@ class _AdaptiveLayoutBuilderState extends ConsumerState<AdaptiveLayoutBuilder> {
final mediaQuery = MediaQuery.of(context);
return MediaQuery(
data: mediaQuery.copyWith(
padding: isDesktop || kIsWeb ? const EdgeInsets.only(top: defaultTitleBarHeight, bottom: 16) : null,
viewPadding: isDesktop || kIsWeb ? const EdgeInsets.only(top: defaultTitleBarHeight, bottom: 16) : null,
),
child: AdaptiveLayout(
data: currentLayout.copyWith(
viewSize: selectedViewSize,
layoutMode: selectedLayoutMode,
inputDevice: input,
platform: currentPlatform,
isDesktop: isDesktop,
controller: scrollControllers,
posterDefaults: posterDefaults,
),
child: Builder(
builder: (context) => isDesktop
? ResolutionChecker(
child:
widget.adaptiveLayout == null ? DebugBanner(child: widget.child(context)) : widget.child(context),
)
: widget.adaptiveLayout == null
? DebugBanner(child: widget.child(context))
: widget.child(context),
),
),
return ValueListenableBuilder(
valueListenable: isKeyboardOpen,
builder: (context, value, child) {
return MediaQuery(
data: mediaQuery.copyWith(
padding: (isDesktop || kIsWeb
? const EdgeInsets.only(top: defaultTitleBarHeight, bottom: 16)
: mediaQuery.padding),
viewPadding: isDesktop || kIsWeb ? const EdgeInsets.only(top: defaultTitleBarHeight, bottom: 16) : null,
),
child: AdaptiveLayout(
data: currentLayout.copyWith(
viewSize: selectedViewSize,
layoutMode: selectedLayoutMode,
inputDevice: input,
platform: currentPlatform,
isDesktop: isDesktop,
controller: scrollControllers,
posterDefaults: posterDefaults,
),
child: Builder(
builder: (context) => isDesktop
? ResolutionChecker(
child: widget.adaptiveLayout == null
? DebugBanner(child: widget.child(context))
: widget.child(context),
)
: widget.adaptiveLayout == null
? DebugBanner(child: widget.child(context))
: widget.child(context),
),
),
);
},
);
}
}

View file

@ -141,7 +141,6 @@ class FocusButtonState extends State<FocusButton> {
cursor: SystemMouseCursors.click,
onEnter: (event) => onHover.value = true,
onExit: (event) => onHover.value = false,
hitTestBehavior: HitTestBehavior.translucent,
child: Focus(
focusNode: focusNode,
autofocus: widget.autoFocus,
@ -160,7 +159,13 @@ class FocusButtonState extends State<FocusButton> {
onTap: widget.onTap,
onSecondaryTapDown: widget.onSecondaryTapDown,
onLongPress: widget.onLongPress,
child: widget.child,
child: Container(
clipBehavior: Clip.hardEdge,
decoration: BoxDecoration(
borderRadius: widget.borderRadius ?? FladderTheme.smallShape.borderRadius,
),
child: widget.child,
),
),
Positioned.fill(
child: ValueListenableBuilder(