Repository navigation
Add support/enablers for custom/in-app virtual keyboards #68988
Description
Activity
- addedc: proposalA detailed proposal for a change to FlutterA detailed proposal for a change to Fluttera: text inputEntering text in a text field or keyboard related problemsEntering text in a text field or keyboard related problemsframeworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.
on Oct 26, 2020 This is really awesome, thanks for the proposal! It never crossed my mind that there might be a reason to write an in-app keyboard in Flutter, but this definitely makes sense for IoT platforms with no system keyboard.
Would you be willing to turn your proof of concept into a PR? I'm happy to help with reviews or anything else.
CC @gspencergoog who has worked on Linux keyboard support.
Reacted by J-P Nurmi, Pedro Massango, Hannes Winkler and David AlcaldeI'm glad you like the proposal! I can start cleaning up the experimental patches I have lying around.
I have opened a PR: #69146
- added a commit that references this issue
on Jan 15, 2021 You can consider Cool_UI
- addedP1High-priority issues at the top of the work listHigh-priority issues at the top of the work list
on May 13, 2021 An internal customer has requested this feature. It is not blocking but they would like to switch to using a virtual in-flutter keyboard when it's ready.
@LongCatIsLooong Does the implementation look good in general? Is there anything else needed besides thorough testing on all platforms?
@jpnurmi yeah I think it looks good to me in general (thank you very much for the effort you put in the PR!), but I'd like to grab a second pair of eyes from the web team and verify this does not break the current web implementation.
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.- locked as resolved and limited conversation to collaborators
on Oct 18, 2022
Use case
Flutter should make it possible to override the default text input control.
The default text input control is hard-wired to a method channel that is used to communicate with the platform plugin. However, on embedded systems that do not have a system-wide virtual keyboard, it should be possible for an in-app virtual keyboard to register itself so that it can take over the text input communication.
Proposal
In essence, an in-app VKB should be allowed to:
a) intercept text input calls (respective to
'TextInput.xxx') from Flutter, andb) provide text input responses (respective to
'TextInputClient.xxx') back to Flutter.This would be possible if there was a way to register a custom text input control that would override the default text input control. Notice, however, that even with custom text input controls it is important to keep some of the text input method channel communication intact to ensure that text input with e.g. physical keyboards continues to work.
Related packages
There is a basic
virtual_keyboardpackage on pub.dev. Notice that it's just a widget with a callback for key presses. Since it has no way to integrate with Flutter and specificallyTextField, the example is simply collecting key presses into aTextlabel and has a toggle button to tell the VKB whether it should present a textual or a numeric mode. While this approach "works" for a trivial single page example, it does not really scale that well for real-life apps with multiple screens and input fields.Proof of concept
I have made a proof of concept implementation based on the above proposal and the
virtual_keyboardpackage. Here's a video that shows it in action, running with flutter-pi on a Raspberry Pi 4: https://www.youtube.com/watch?v=zgiiThQCU1E