这是一个在滚动区域中创建文本输入的小部件。我希望文本小部件从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
),
],
),
);
答案 0 :(得分:2)
警告:大多数情况下,测量窗口小部件的大小是一个坏主意。 您应该考虑许多替代方案。
Flutter小部件应该既不知道它们在屏幕上呈现的位置,也不知道它们的兄弟姐妹/孩子的大小。有一些例外。但请记住这一点。
这是一个单行:context.size
。上下文是您要测量的窗口小部件的上下文。
该函数仅在构建方法之外可用。
您可能希望使用GlobalKey
来获取孩子的上下文。
由于size
属性仅在构建后可用,因此您可能还希望在构建调用之后使用Scheduler
来计算 。这可以通过SchedulerBinding.instance.addPostFrameCallback(callback)
实现。