flutter TextField 输入框被软键盘挡住的解决方案

方法1

以前搞ionic1~4的开发中 和react-native   flutter中的机制完全不同, 在flutter 中 当前页面如果存在元素被软键盘挡住 的情况 页面元素的最外层肯定得嵌套一层   SingleChildScrollView(一般建议建议用 ListView.builder,因为官方都说了ListView.builder 比SingleChildScrollView 性能好很多)

 

 

body: Container(

         //SingleChildScrollView 的父级元素得有高度  最外层Container默认 填充全部
        child: SingleChildScrollView(

        ........
    )

)

SingleChildScrollView 元素内部不能和  Expanded 的flex 直接填充 会冲突 。。。

 

 

方法2

flutter  解决这种有两种办法 一种就是传统的嵌套 SingleChildScrollView 让页面可以上下滑动  如果不想改变页面结构 

这种方法大部分是为了不让软键盘挤压导致页面Widget 变形 软键盘挡住输入框还得类scroller 属性的组件来嵌套

flutter  类入口的 Scaffold 的resizeToAvoidBottomInset: false 就可以

注意:  一个页面不管嵌套了多少类 只要用了Scaffold   都需要设置 resizeToAvoidBottomInset: false 

注意:resizeToAvoidBottomInset: false的组件内部的子组件 用WidgetsBindingObserver类 监听软键盘的时候 会监听软键盘高度为0 这个注意一下 

拓展

https://blog.youkuaiyun.com/sinat_37255207/article/details/106167427?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159197384619724848357144%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=159197384619724848357144&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v1~rank_blog_v1-1-106167427.pc_v1_rank_blog_v1&utm_term=%E8%BD%AF%E9%94%AE%E7%9B%98

如果您在 Android 12 中关闭了硬件加速器,并且在 Flutter 应用中点击输入框弹出键盘时出现了空白问题,您可以尝试以下解决办法: 1. 启用软键盘适配器 在您的 Flutter 应用中,可以使用软键盘适配器来协调软件渲染引擎和硬件加速器之间的差异。软键盘适配器可以自动调整您的应用程序布局,以避免出现空白问题。您可以在 Flutter 应用中添加以下依赖项: ```yaml dependencies: flutter_keyboard_visibility: ^5.0.0 keyboard_actions: ^3.0.0 ``` 然后,在您的代码中使用 KeyboardActions widget 和 KeyboardVisibilityBuilder widget 来设置软键盘适配器的行为。例如: ```dart import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; import 'package:keyboard_actions/keyboard_actions.dart'; class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return KeyboardActions( config: KeyboardActionsConfig( keyboardActionsPlatform: KeyboardActionsPlatform.ALL, actions: [ KeyboardActionsItem( focusNode: _focusNode, toolbarButtons: [ (node) { return GestureDetector( onTap: () => node.unfocus(), child: const Text('关闭'), ); }, ], ), ], ), child: Column( children: <Widget>[ TextField( focusNode: _focusNode, decoration: const InputDecoration( hintText: '请输入内容', ), ), KeyboardVisibilityBuilder( builder: (context, visible, child) { return Container( height: visible ? 0 : 0, ); }, ), ], ), ); } } ``` 2. 升级 Flutter 版本 如果您使用的是较旧的 Flutter 版本,则可能会遇到此问题。尝试升级到最新版本,以获取最新的修复程序和功能。 3. 更新 Android 12 系统版本 如果您的 Android 12 系统版本较旧,则可能会出现此问题。尝试更新到最新的 Android 12 系统版本,以获取最新的修复程序和功能。 希望以上解决办法能够帮助您解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值