【问题标题】:Flutter: How to make TextView in Listview fill remaining spaceFlutter:如何使 Listview 中的 TextView 填充剩余空间
【发布时间】:2020-05-14 05:32:42
【问题描述】:

我需要你的帮助。我正在使用一个 ListView,它包含一个高度为 100 的容器和一个 Textfield,其中 maxlines 设置为 null

maxlines 设置为null,因为用户应该能够写任意多的行。

TextfieldContainer 嵌套在 ListView 中,因为如果 Textfield 展开超过屏幕高度,它们需要一起滚动。
所以我基本上是在尝试制作某种笔记应用程序。 Container 是标题。 Textfieldtextbody

问题:
当用户没有在Textfield 中输入任何内容时,Textfield 应该填充剩余的空间。所以它应该像 Expandable Widget 一样展开到屏幕的末尾。我怎样才能做到这一点?

【问题讨论】:

  • 添加一些你到目前为止所做的代码......但也根据你所说的,尝试将 minLines 值设置为将填满整个屏幕的值
  • @mjhansen3 minLines 工作正常!您对如何计算 minLines 以准确填充剩余空间有任何想法吗?
  • 目前,我不知道如何计算适合剩余空间的确切数字。

标签: android flutter flutter-layout


【解决方案1】:

这应该会完成你想要做的事情:

class MyPageBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (context, constraint) {
        return SingleChildScrollView(
          child: ConstrainedBox(
            constraints: BoxConstraints(minHeight: constraint.maxHeight),
            child: IntrinsicHeight(
              child: Column(
                children: <Widget>[
                  Container(
                    height: 100,
                    alignment: Alignment.center,
                    color: Colors.green,
                    child: Text("Header"),
                  ),
                  Expanded(
                    child: TextField(
                      expands: true,
                      maxLines: null,
                      decoration: InputDecoration(
                          fillColor: Colors.blue[200], filled: true),
                    ),
                  ),
                ],
              ),
            ),
          ),
        );
      },
    );
  }
}

【讨论】:

  • 感谢您的回答!稍后我会尝试它是否对我有用:)
  • 我更新了我的问题。如果你能快速浏览一下就好了:)
  • 您问题的新部分实际上是一个完全不同的问题。对于第一个问题的完整性,您介意删除更新的部分吗?要获得始终位于底部的标签栏,请查看BottomNavigationBar。您将分为三个部分。 1. 顶部的 appBar,2. 正文(这是滚动的部分)。和 3. 你的底部导航栏
  • 我可以为此打开一个新主题/问题。我已经在使用 BottomNavigationBar。问题是我无法让身体按照我的意愿行事。
  • 我接受了你的回答,因为它解决了我最初的问题。我还用更多解释和代码打开了一个新问题:stackoverflow.com/questions/59993861/…