쉽게 들릴 수 있지만 어떻게 여러 줄로 편집 가능한 텍스트 필드를 flutter로 할 수 있습니까? TextField는 한 줄로만 작동합니다.
편집 : 명확하지 않은 것처럼 보이기 때문에 일부 정밀도. 텍스트 내용을 가상으로 감싸도록 여러 줄을 설정할 수 있지만 여전히 여러 줄이 아닙니다. 여러 줄로 표시되는 한 줄입니다. 이런 식으로하고 싶다면 할 수 없습니다. ENTER
버튼에 대한 액세스 권한이 없기 때문 입니다. 그리고 Enter 버튼이 없다는 것은 여러 줄이 없음을 의미합니다.
답변
자동 줄 바꿈을 사용하려면 다음 maxLines
과 같이 설정하십시오 null
.
TextField(
keyboardType: TextInputType.multiline,
maxLines: null,
)
경우 maxLines
속성입니다 null
,이 라인의 수에는 제한 없으며, 랩이 활성화됩니다.
답변
TextField가 사용자 입력에 맞게 조정되도록하려면 다음을 수행하십시오.
TextField(
keyboardType: TextInputType.multiline,
minLines: 1,//Normal textInputField will be displayed
maxLines: 5,// when user presses enter it will adapt to it
);
여기에서 최대 라인을 원하는대로 설정하면 갈 수 있습니다. 제 생각에 maxlines를 null로 설정하는 것은 좋은 선택이 아닙니다. 값을 설정해야합니다.
답변
다른 사람들이 이미 “TextInputType.multiline”키보드 유형을 사용할 수 있다고 언급했지만, 나는 종종 입력 동작을 모방하기를 원하기 때문에 새 줄이 입력 될 때 높이를 자동으로 조정하는 TextField 구현을 추가하고 싶었습니다. WhatsApp 및 유사 앱.
이 목적을 위해 텍스트가 변경 될 때마다 입력에서 ‘\ n’채터의 수를 분석하고 있습니다. 이것은 과잉 인 것 같지만, 안타깝게도 지금까지 Flutter에서 더 나은 가능성을 찾지 못했고 구형 스마트 폰에서도 성능 문제를 발견하지 못했습니다.
class _MyScreenState extends State<MyScreen> {
double _inputHeight = 50;
final TextEditingController _textEditingController = TextEditingController();
@override
void initState() {
super.initState();
_textEditingController.addListener(_checkInputHeight);
}
@override
void dispose() {
_textEditingController.dispose();
super.dispose();
}
void _checkInputHeight() async {
int count = _textEditingController.text.split('\n').length;
if (count == 0 && _inputHeight == 50.0) {
return;
}
if (count <= 5) { // use a maximum height of 6 rows
// height values can be adapted based on the font size
var newHeight = count == 0 ? 50.0 : 28.0 + (count * 18.0);
setState(() {
_inputHeight = newHeight;
});
}
}
// ... build method here
TextField(
controller: _textEditingController,
textInputAction: TextInputAction.newline,
keyboardType: TextInputType.multiline,
maxLines: null,
)
답변
이것을 사용하십시오
TextFormField(
keyboardType: TextInputType.multiline,
maxLines: //Number_of_lines(int),)
답변
답변
사용 expands
당신은 줄 필요가 없습니다 minLines
또는 maxLines
특정 값 :
TextField(
maxLines: null,
expands: true,
keyboardType: TextInputType.multiline,
)
답변
위의 경우 한 번 작동하지 않으면 minLines 도 추가하십시오.
TextField(
keyboardType: TextInputType.multiline,
minLines: 3,
maxLines: null);