实现思路: 使用GestureDetector将最外层的MaterialApp包裹起来,监听onTap点击事件,使用FocusSocpe相关的api来控制软件的显示和隐藏。当键盘显示的时候,将键盘隐藏。
封装Widget
/// 因为不需要保持状态,所以这里继承的是StatelessWidget
class HideKeyboard extends StatelessWidget {
final Widget child;
const HideKeyboard({Key key, this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
return GestureDetector(
child: child,
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus &&
currentFocus.focusedChild != null) {
/// 取消焦点,相当于关闭键盘
FocusManager.instance.primaryFocus.unfocus();
}
},
);
}
}
使用
main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
/// 放在app最外层即可。
return HideKeyboard(
child: MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Hide soft keyboard demo"),
),
body: Container(
child: Text("hello,world"),
),
),
),
);
}
}
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!