扑动 - 为什么受限制的框中的文本输入不会从minHeight增加到maxHeight?

时间:2018-02-08 06:24:46

标签: dart flutter

这是一个在滚动区域中创建文本输入的小部件。我希望文本小部件从minHeight增长到maxHeight,但默认为maxHeight。

即使文本输入没有高度,我如何构造它从minHeight增长到maxHeight?

这是我目前的代码:

return new ConstrainedBox(
    constraints: new BoxConstraints(
      minHeight: 25.0,
      maxHeight: 60.0,
    ),
    child: new ListView(
      scrollDirection: Axis.vertical,
      reverse: true,
      children: <Widget>[

        new Container(
        decoration: new BoxDecoration(
          color: Colors.grey,
        ),
        padding: const EdgeInsets.all(7.0),

        // here's the actual text box
        child: new TextField(
          keyboardType: TextInputType.multiline,
          maxLines: null, //grow automatically
          focusNode: mrFocus,
          controller: _textController,
          onSubmitted: currentIsComposing ? _handleSubmitted : null,
          decoration: new InputDecoration.collapsed(
            hintText: ChqStrings.of(context).sendAMessage(),
          ),
        ),
        // ends the actual text box
      ),
    ],
  ),
);

1 个答案:

答案 0 :(得分:2)

警告:大多数情况下,测量窗口小部件的大小是一个坏主意。 您应该考虑许多替代方案。

Flutter小部件应该既不知道它们在屏幕上呈现的位置,也不知道它们的兄弟姐妹/孩子的大小。有一些例外。但请记住这一点。

这是一个单行:context.size。上下文是您要测量的窗口小部件的上下文。 该函数仅在构建方法之外可用。

您可能希望使用GlobalKey来获取孩子的上下文。

由于size属性仅在构建后可用,因此您可能还希望在构建调用之后使用Scheduler来计算 。这可以通过SchedulerBinding.instance.addPostFrameCallback(callback)实现。