likes
comments
collection
share

flutter中软键盘弹出遮挡输入框的处理

作者站长头像
站长
· 阅读数 26

一般来说在flutter中我们遇到软键盘弹出遮挡键盘的时候有两种处理办法:

第一种情况:

flutter中软键盘弹出遮挡输入框的处理

这是键盘未弹出的状态,这种情况下我们想要达到的效果肯定是软键盘弹出并且把login按钮顶上去,而且界面不可滑动才能达到最好的交互效果:

flutter中软键盘弹出遮挡输入框的处理

那么如何实现这样一个代码呢?

/// 这里只贴上关键的部分代码
...
Scaffold(
    resizeToAvoidBottomInset: false, /// 这里必须禁止重绘
    body: SingleChildScrollView(
      reverse: true,
      child: SizedBox(
        /// 这里根据页面的情况来得到一个高度
        height: MediaQuery.of(context).size.height * 0.8,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            ...
            /// 主要是思路是设置一个固定高度的SingleChildScrollView然后用expended容器可自由撑起空间
            Expanded(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.end,
                children: [
                  GestureDetector(
                    child:  Container(
                      margin: EdgeInsets.only(left: 20),
                      width: 335,
                      height: 48,
                      decoration: BoxDecoration(
                        color: Theme.of(context).primaryColor,
                        borderRadius: BorderRadius.all(Radius.circular(90))
                      ),
                      child: Center(
                        child: Text('Login', style: TextStyle(color: Colors.white)),
                      ),
                    ),
                    onTap: () {
                      Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreatePassWord()));
                    },
                  ),
                  /// 主要是这里有一个padding将从屏幕的下方撑起一个键盘的高度从而把按钮顶上去
                  Padding(padding: MediaQuery.of(context).viewInsets),
                ],
              )
            ),
          ],
        ),
      )
    )
)
...

说完了第一种情况,那我们考虑一下第二种情况呢?

第二种情况

还有一种情况,我们页面的的留白部分不够多,不足以撑起一个键盘还不遮挡输入框,例子如下: 红色的区域就是弹性区域,但它的高度不够键盘的高度,所以为了交互得当,我们需要在这个页面做可滚动的操作。 flutter中软键盘弹出遮挡输入框的处理 实现的代码如下:

...
// resizeToAvoidBottomInset: false, /// 注释掉这一句开启重绘,整个页面就能上下滑动了
...
转载自:https://juejin.cn/post/7024122769382047775
评论
请登录