Flutter:通过SingleChildScrollView使列可滚动会截断列

63lcw9qa  于 2023-03-04  发布在  Flutter
关注(0)|答案(1)|浏览(179)

我有一个注册页面,它由一列、文本字段和注册按钮组成,代码如下所示:

Widget build(BuildContext context) {
    return Scaffold(
      key: scaffoldKey,
      appBar: AppBar(...),
      backgroundColor: secondaryColor,
      body: GestureDetector(
        onTap: () => FocusScope.of(context).unfocus(),
        child: Column(
          mainAxisSize: MainAxisSize.max,
          children: [
            Align(...)
            Form(...),
            socialLoginSeparator(context),
            socialLoginButtons(context),
          ],
        ),
      ),
    );
  }

聚焦Form中的任何一个TextFormFields都会打开键盘,这会导致列在底部溢出,并出现以下错误:

The following assertion was thrown during layout:
A RenderFlex overflowed by 5.7 pixels on the bottom.

我一直在尝试修复这个问题,并了解到可以通过将Column Package 在SingleChildScrollView中来解决这个问题。这样做可以解决溢出错误,但它似乎截断了底部的列...即,当我关闭键盘时(使该列自动滚动到其“自然”位置)并尝试再次拖动+滚动该列,它在屏幕中间被截断了。有什么方法可以解决这个问题吗?

smdnsysy

smdnsysy1#

没有访问完整的信息,这可以是解决方案,如果这不起作用,请在这里评论,

Scaffold(
        key: scaffoldKey,
        appBar: AppBar(...),
        backgroundColor: secondaryColor,
        body: GestureDetector(
        onTap: () => FocusScope.of(context).unfocus(),
        child: SizedBox(
          height: MediaQuery.of(context).size.height,
          width: MediaQuery.of(context).size.width,
          child: SingleChildScrollView(
            child: Expanded(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Align(...)
                  Form(...),
                  socialLoginSeparator(context),
                  socialLoginButtons(context),
                ],
              ),
            ),
          ),
        ),
      ));

相关问题