方法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 这个注意一下
拓展