在
flutter
中遇到这样一种情况,当设置TextField
的maxLines
的值大于1时,其初始高度会随着maxLines
的变化而变化,完全不能像微信输入框一样高度可以随着文字行数变化,查看api发现将maxLines
设置为null
,再将keyboardType
设置为TextInputType.multiline
,就会随着高度变化而变化,但是这样的效果就是没有一个最大高度,故在外层包含一个Container
并设置其maxHeight
和minHeight
就可以完美解决。
代码如下:
return Container(
color: Colors.red,
constraints: BoxConstraints(
maxHeight: 144.0,
maxWidth: _screenWidth(),
minHeight: 48.0,
minWidth: _screenWidth()),
padding: EdgeInsets.only(
left: 16.0, right: 16.0, top: 8.0, bottom: 4.0),
child: TextField(
maxLines: null,
keyboardType: TextInputType.multiline,
decoration: InputDecoration.collapsed(
hintText: "Write a comment",
),
),
);
double _screenWidth() {
return MediaQuery.of(context).size.width;
}
LinearProgressIndicator组件的使用
//LinearProgressIndicator本身不能设置高度,
// 可以包一层父容器设置高度来间接设置LinearProgressIndicator的高度
Container(
padding: EdgeInsets.all(20),
child: Container(
height: 30, //设置高度
child: LinearProgressIndicator(
//0~1的浮点数,用来表示进度多少;
// 如果 value 为 null 或空,则显示一个动画,否则显示一个定值
value: 0.8,
//animation类型的参数,用来设定进度值的颜色,默认为主题色
valueColor:
new AlwaysStoppedAnimation<Color>(Colors.greenAccent),
backgroundColor: Color(0xfff0f0f0),//背景颜色
semanticsLabel: "这是semanticsLabel",
semanticsValue: "这是semanticsValue",
),
),
),