fix(tv): restore the native Android IME for single-line text input
Android TV returns to the platform keyboard for single-line fields; the Flutter overlay stays for multiline and explicit call sites. The bugs that forced the overlay (#1051, #1079) were an engine show/bind ordering race, now repaired at the app level: - MainActivity retries a soft-input show the engine dropped while the FlutterView was not yet served (flutter/flutter#177360), rebinds the IME key session once at first show, and consumes leaked D-pad keys while the keyboard is visible (bounded restartInput budget) so focus cannot wander behind a stuck keyboard. - The platform text-input hint is activation-based, so gamepad pause and the pre-IME D-pad intercept track a live session instead of mere field focus. - While a session is live with the keyboard away, Back closes it and is consumed once, Select re-raises the keyboard, and arrows keep caret-aware edge-escape navigation instead of dead-ending.
This commit is contained in:
@@ -499,9 +499,10 @@ class _AddJellyfinScreenState extends State<AddJellyfinScreen> with AsyncFormSta
|
||||
FocusableTextFormField(
|
||||
controller: _urlController,
|
||||
focusNode: _urlFocus,
|
||||
tvTextInputPresentation: PlatformDetector.isAppleTV()
|
||||
? TvTextInputPresentation.platform
|
||||
: TvTextInputPresentation.automatic,
|
||||
// Native on every TV: `automatic` would route this wrap-to-4-lines
|
||||
// field to the Flutter overlay, but it is logically single-line URL
|
||||
// input and the platform IME handles it (#1051, #1079).
|
||||
tvTextInputPresentation: TvTextInputPresentation.platform,
|
||||
autofocus: true,
|
||||
tvTextInputAutoOpenBehavior: deferredUrlFieldAutoOpen,
|
||||
keyboardType: TextInputType.url,
|
||||
|
||||
Reference in New Issue
Block a user