#flutter #dart
Вопрос:
Я снимаю экран, используя каркас в flutter, где у меня есть панель приложений и текст, заполненный в теле, теперь я хочу поднять весь экран (включая панель приложений), когда текстовый файл сфокусировался и появилась клавиатура (потому что мой нижний текстовый файл был скрыт клавиатурой). Я выяснил, как обнаруживать foucs(используя focusNode), теперь единственное, чего я хочу, — это поднимать весь экран, когда текстовый файл получает foucs.
Ответ №1:
Тебе нужно взяться resizeToAvoidBottomInset: true
за свой эшафот. По умолчанию это значение равно true
, что означает изменение размера виджета при появлении клавиатуры.
Как уже упоминалось, у вас есть несколько текстовых полей в каркасе, затем вы можете добавить SingleChildScrollView
в тело, которое затем будет прокручиваться вверх, если текстовое поле находится вне области просмотра.
Пример:
@override
Widget build(BuildContext context) {
return Scaffold(
//Default is true so this can be ignore/removed
resizeToAvoidBottomInset: true,
appBar: AppBar(
title: Text(widget.title),
),
body: SingleChildScrollView(
padding: EdgeInsets.all(16),
child: Column(
children: [
TextField(decoration: InputDecoration(labelText: 'Text Field 1')),
TextField(decoration: InputDecoration(labelText: 'Text Field 2')),
TextField(decoration: InputDecoration(labelText: 'Text Field 3')),
TextField(decoration: InputDecoration(labelText: 'Text Field 4')),
TextField(decoration: InputDecoration(labelText: 'Text Field 5')),
TextField(decoration: InputDecoration(labelText: 'Text Field 6')),
TextField(decoration: InputDecoration(labelText: 'Text Field 7')),
],
),
),
);
}