Когда клавиатура появляется, виджеты флаттера изменяются. Как предотвратить это?

У меня есть столбец расширенных виджетов, например:

 return new Container(
      child: new Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          new Expanded(
            flex: 1,
            child: convertFrom,
          ),
          new Expanded(
            flex: 1,
            child: convertTo,
          ),
          new Expanded(
            flex: 1,
            child: description,
          ),
        ],
      ),
    );

Он выглядит так: введите описание изображения здесь

convertFrom, включает TextField. Когда я нажимаю на это текстовое поле, на экране появляется клавиатура Android. Это изменяет размер экрана, поэтому виджеты изменяются следующим образом: введите описание изображения здесь

Есть ли способ, чтобы клавиатура "накладывала" на экран, чтобы моя колонка не изменялась? Если я не использую Expanded widgets и hardcode высоту для каждого виджета, виджеты не изменяются, но я получаю черно-желтую полосатую ошибку, когда появляется клавиатура (потому что недостаточно места). Это также не является гибким для всех размеров экрана.

Я не уверен, что это специфичный для Android или Flutter-специфический.

Ответ 1

В вашем Scaffold установите resizeToAvoidBottomInset свойства resizeToAvoidBottomInset значение false.

Свойство resizeToAvoidBottomPadding устарело... В вашем Scaffold установите resizeToAvoidBottomPadding свойства resizeToAvoidBottomPadding значение false.

Ответ 3

В зависимости от варианта использования вы также можете рассмотреть возможность использования listview. Это обеспечит прокрутку содержимого, когда места недостаточно. В качестве примера вы можете посмотреть демонстрацию текстовое поле в приложении галереи