![](/img/trans.png)
[英]Soft keyboard not opening after setting textIsSelectable(true) in Android
[英]Flutter - Weird behavior when reading RawKeyEvents after opening soft keyboard
我正在開發一個 Flutter 應用程序,該應用程序最終將在基於 Android 的掃描設備上運行。 與許多硬件掃描儀一樣,該設備在掃描條形碼時會迅速觸發許多鍵盤事件。 I've resorted to a Flutter package that seemed ideal for my usecase: https://pub.dev/packages/flutter_barcode_listener - Basically all this does is listen for RawKeyEvents using Flutter's built-in RawKeyboard class, translate those to usable characters, fill包含這些字符的數組,並在收到換行符 (\n) 后,將數組加入字符串並返回。
這工作正常,直到在應用程序中打開軟鍵盤,一旦發生這種情況,偵聽器在掃描條形碼后收到的唯一 RawKeyEvent 是換行符,沒有別的。 因此,掃描條碼后會返回一個空字符串。 奇怪的是,導致應用程序失去焦點(例如,通過使用主頁按鈕將其最小化或打開最近的應用程序概覽)將恢復條形碼偵聽器的功能,並且將再次生成正確的 RawKeyEvents。
這絕對是 Flutter 的一個問題,因為我確認掃描儀仍然通過 ADB 日志讀取數據。 任何有關可能導致此問題的指示都非常受歡迎。
我還想補充一點,ADB 記錄在掃描條形碼后會告訴我以下信息:
3104 9582 D ScanDataOutput: softkeyboard is not running (2)
3104 9582 D ScanDataOutput: SSI(terminator):<LF>
3104 9582 D ScanDataOutput: LF, 4
3104 9582 E ScanDataOutput: ERROR! terminator = <LF>!
3104 9582 E ScanDataOutput: ERROR! terminator :
3104 9582 E ScanDataOutput: dataResult:
原來這是我使用的硬件掃描儀的問題。 掃描儀未配置為明確使用 KeyEvents 作為 output 方法。 這讓我想到了另一個問題,即 Flutter 的 RawKeyBoard 庫會導致上述軟鍵盤在接收到 KeyEvent 時激活。 這會導致不良行為,即掃描條形碼而不專注於 TextInput 仍會導致鍵盤打開。
如果有人在 Android 上遇到類似問題,請參考以下github 線程。 不幸的是,這是 Flutter 本身的錯誤,目前只能通過使用不受此錯誤影響的某些第三方軟件鍵盤來規避。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.