Flutter TextField 多行文本 文本域 點(diǎn)擊區(qū)域只有一行問題,只有點(diǎn)擊第一行才會(huì)彈出鍵盤
找了半天資料沒找到,只能自己調(diào)試,幸好終于找出來了。
我定義的高度是350高度,正常我們需要的是 TextField 直接鋪滿整個(gè)350高度,但由于我設(shè)置了 minLines最小行是1,所以 TextField 沒有跟多內(nèi)容撐開就導(dǎo)致TextField 的點(diǎn)擊區(qū)域只有一行。
在多行文本情況下
- minLines單獨(dú)使用,不設(shè)置maxLines(默認(rèn)是1),只要大于1就會(huì)報(bào)錯(cuò)
- maxLines單獨(dú)使用,不設(shè)置minLines(默認(rèn)是null),maxLines多少,點(diǎn)擊區(qū)域就有多少行
- minLines和maxLines同時(shí)使用的話可以根據(jù)內(nèi)容自適應(yīng)最小行數(shù)到最高行數(shù)
解決辦法就是不設(shè)置minLines,把maxLines設(shè)置大一點(diǎn)就行,根據(jù)實(shí)際情況調(diào)整就行。
代碼
Widget getTextField({
TextEditingController controller,
TextInputType keyboardType: TextInputType.multiline,
TextInputAction textInputAction: TextInputAction.next,
FocusNode focusNode,
String hintText,
int length: 32,
}) {
return Container(
width: double.infinity,
padding: EdgeInsets.symmetric(
vertical: setWidth(10),
horizontal: setWidth(20),
),
height: setHeight(350),
alignment: Alignment.topCenter,
child: TextField(
controller: controller,
focusNode: focusNode,
maxLines: 20,
textInputAction: textInputAction,
keyboardType: keyboardType,
textAlign: TextAlign.left,
style: TextStyle(fontSize: setSp(26)),
inputFormatters: <TextInputFormatter>[
LengthLimitingTextInputFormatter(length),
],
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(fontSize: setSp(26), color: XColors.textColor3),
isDense: true,
contentPadding: EdgeInsets.only(
left: setWidth(0),
top: setHeight(0),
bottom: setHeight(4),
right: setWidth(0),
),
border: InputBorder.none,
),
),
decoration: BoxDecoration(
color: XColors.dividerColor,
border: Border.all(color: XColors.grayColor2, width: setWidth(2)),
borderRadius: BorderRadius.circular(setWidth(10)),
),
);
}