Кажется, существует давняя проблема с плагином Flutter Webview на Android - если это обсуждение является чем-то go. Я тоже столкнулся с этим - в диалоговом окне Webview у меня есть поле ввода, которое при фокусировке вызывает появление программной клавиатуры Android. Однако впоследствии он не исчезает sh сам по себе, когда это поле ввода теряет фокус - или даже когда оно удаляется из дерева DOM. Я был бы очень признателен всем, кто мог бы предложить решение. Я испробовал различные идеи, упомянутые в этом обсуждении, включая выпуск SystemChannels.textInput.invokeMethod('TextInput.hide');
из кода Дарт позади.
Единственный другой способ, которым я могу придумать, - это написать небольшой «плагин» Flutter Android, который пытается скрыть программную клавиатуру напрямую через Android API, который, я думаю, должен работать. Если кто-то может указать мне код Kotlin, необходимый для этого, я был бы очень признателен.
Вот как я создаю пользовательский интерфейс приложения - все дерево виджетов
Route makeWebView(RouteSettings settings)
{
return new PageRouteBuilder
(
pageBuilder:(BuildContext context,Animation<double>
animation,Animation<double> secondaryAnimation)
{
return SafeArea
(
child:Listener
(
child: SizedBox.expand
(
child:WebView
(
debuggingEnabled:true,
initialUrl:'',
javascriptMode:JavascriptMode.unrestricted,
onWebViewCreated:registerController,
javascriptChannels:Set.from
([JavascriptChannel(name:'JSBridge',
onMessageReceived:handleMessage)]),
),
),
)
);
});
}