键盘将modalBottomSheet推出边界,resizeToAvoidBottomInset不起作用

我在 Flutter 应用程序中遇到了问题。即使 Scaffold 将resizeToAvoidBottomInset设置为false,键盘也会向上推模态底部表单。我希望模态底部工作表保持在其初始位置。我将向您展示我用于显示模态底部工作表的代码,并附上一个视频来向您展示该错误。

Scaffold(
    resizeToAvoidBottomInset: false,
    key: _scaffoldKey,
    body: ...
)

showModalBottomSheet(
  context: context,
  isScrollControlled: true,
  backgroundColor: Colors.transparent,
  builder: (context) => Container(
      height: MediaQuery.of(context).size.height * 0.8,
      decoration: new BoxDecoration(
        color: Colors.white,
        borderRadius: new BorderRadius.only(
          topLeft: const Radius.circular(25.0),
          topRight: const Radius.circular(25.0),
        ),
      ),
      child: SearchPlace((place, alreadyExists) {
        Navigator.pop(context);
        didSelectPlace(place, alreadyExists);
      })),
);

希望您能帮帮我,谢谢!

回答

好的,所以我自己找到了解决此问题的方法。

我希望模态底页占据屏幕的 80%,但它总是由键盘推动。为了解决这个问题,我将主Container包裹在一个Column小部件中,并添加了一个额外的透明 Container 和一个GestureDetector(以消除底部工作表),其高度为屏幕的 20%。之后,我将 Column 包裹在SingleChildScrollView 中。现在一切正常!我在下面添加了一个视频。

showModalBottomSheet(
    context: context,
    isScrollControlled: true,
    backgroundColor: Colors.transparent,
  builder: (context) => SingleChildScrollView(
    child: Column(children: [
      GestureDetector(
        onTap: () {
          Navigator.pop(context);
        },
        child: Container(
          color: Colors.transparent,
          height: MediaQuery.of(context).size.height * 0.2,
        ),
      ),
      Container(
          height: MediaQuery.of(context).size.height * 0.8,
          decoration: new BoxDecoration(
            color: Colors.white,
            borderRadius: new BorderRadius.only(
              topLeft: const Radius.circular(25.0),
              topRight: const Radius.circular(25.0),
            ),
          ),
          child: SearchPlace((place, alreadyExists) => {
                Navigator.pop(context),
                didSelectPlace(place, alreadyExists),
              })),
    ]),
  ),
);


以上是键盘将modalBottomSheet推出边界,resizeToAvoidBottomInset不起作用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>