Как поднять весь экран, когда текстовый файл получил фокус?

#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')),
          ],
        ),
      ),
    );
  }