it-swarm.com.ru

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

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

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

Это выглядит так: enter image description here

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

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

Я не уверен, является ли это для Android или Flutter.

28
Mary

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

Свойство resizeToAvoidBottomPadding устарело ... В вашем Scaffold установите для свойства resizeToAvoidBottomPaddingfalse.

97
aziza

Установите resizeToAvoidBottomInset в false вместо resizeToAvoidBottomPadding , что устарело.

    return Scaffold(
      resizeToAvoidBottomInset : false,
      body: YourWidgets(),
    );
4
ArtiomLK

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

2
aptik