v1.1.10: Fix keyboard opening on navigation in Android TV

- Added ExcludeFocus and readOnly: !_isEditing to _TVTextField
- Prevents keyboard from opening during D-pad navigation
- Ensures keyboard only opens when strictly intended by _activateInput
This commit is contained in:
Michael committed 2025-12-10 20:09:48 +01:00
1 parent b93b25b130
commit cd2e4df2a8
2 files changed
+8 -4

No files matched your search

@@ -626,9 +626,15 @@ class _TVTextFieldState extends State<_TVTextField> {
border: isFocused ? Border.all(color: AppColors.primary, width: 2) : null, border: isFocused ? Border.all(color: AppColors.primary, width: 2) : null,
borderRadius: BorderRadius.circular(4), borderRadius: BorderRadius.circular(4),
), ),
// Ignore standard focus traversal to child, only allow programatic focus
child: ExcludeFocus(
excluding: !_isEditing,
child: TextField( child: TextField(
controller: widget.controller, controller: widget.controller,
focusNode: _inputFocus, focusNode: _inputFocus,
// Prevent keyboard if somehow focused while not editing
readOnly: !_isEditing,
showCursor: _isEditing,
obscureText: widget.obscureText, obscureText: widget.obscureText,
keyboardType: widget.keyboardType, keyboardType: widget.keyboardType,
textInputAction: widget.textAction, textInputAction: widget.textAction,
@@ -639,9 +645,6 @@ class _TVTextFieldState extends State<_TVTextField> {
widget.onSubmitted?.call(); widget.onSubmitted?.call();
}, },
style: const TextStyle(color: AppColors.textPrimary), style: const TextStyle(color: AppColors.textPrimary),
// Important: Disable standard focus behavior to prevent keyboard popup
// unless we explicitly requested it via _activateInput
canRequestFocus: _isEditing,
decoration: InputDecoration( decoration: InputDecoration(
labelText: widget.label, labelText: widget.label,
hintText: widget.hint, hintText: widget.hint,
@@ -658,6 +661,7 @@ class _TVTextFieldState extends State<_TVTextField> {
), ),
), ),
), ),
),
); );
} }
), ),
@@ -108,7 +108,7 @@ class _MobileSettingsTabState extends ConsumerState<MobileSettingsTab> {
), ),
SizedBox(height: 4), SizedBox(height: 4),
Text( Text(
'Version 1.1.9', 'Version 1.1.10',
style: TextStyle( style: TextStyle(
fontSize: 13, fontSize: 13,
color: AppColors.textSecondary, color: AppColors.textSecondary,