flutter - Flutter Webview 关闭键盘
问题描述
我通过Flutter WebView将用户发送到付款表单。最后,收到付款后,我的 Flutter 应用程序收到一条消息,通知我购买已完成。此时显示的视图是订单摘要/收据。用户在填写付款表格后不会总是关闭键盘。我无法让键盘自动为他们关闭。
我只在安卓模拟器和设备上测试过。键盘也不会关闭。
当收到订单完成消息时,我正在设置触发重建的orderCompleted
变量状态以及何时调用以尝试关闭键盘。这是行不通的。我还在接收器函数中调用了这段代码,但它在那里也不起作用。true
true
FocusScope.of(context).unfocus();
MobileOrderReceived
关于我可以做些什么来解决这个问题的任何想法?
这是我现在的构建功能:
bool orderCompleted = false;
@override
Widget build(BuildContext context) {
if (orderCompleted) {
FocusScope.of(context).unfocus(); // hides the keyboard when the order is received as successful
}
Set<JavascriptChannel> jsChannels = new Set<JavascriptChannel>();
jsChannels.add(
JavascriptChannel(
name: "MobileOrderReceived",
onMessageReceived: (JavascriptMessage receiver) async {
print("Order Completed => ${receiver.message}");
// { ... } code for saving to order history
setState(() {
orderCompleted = true;
});
}
)
);
return Scaffold(
appBar: appBar(context),
body: mainContainer(
WebView(
initialUrl: widget.url,
debuggingEnabled: true,
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: jsChannels,
onWebResourceError: (error) {
print("==> Web Resource Error <==");
print(error);
},
)
),
drawer: MainMenu.buildMenu(context),
);
}
解决方案
FocusScope.of(context).requestFocus(FocusNode());
这条线正在为我工作以编程方式关闭键盘。
推荐阅读
- python - Python tkinter 缩小小部件
- regex - 在href标签notepad++之间提取文本
- javascript - 如何检查特定数组的值并增加或减少它?
- ios - 如何修复“数据(contentsOf:url)崩溃的应用程序”?
- python - 使用pandas concat合并两个数据框时如何删除重复项
- html - html5输入类型url验证中的模式
- sql - 有没有用 CTE 用 DELETE 雪花 SQL 语句查询的替代方法?
- node.js - Axios GET 请求不喜欢未定义的标头(x-auth-token)
- javascript - Javascript异步生成器改变产生值的类型?
- ios - 使用自定义单元格时影响 UITableViewCell 填充的较大文本