Когда клавиатура появляется, виджеты флаттера изменяются. Как предотвратить это?
У меня есть столбец расширенных виджетов, например:
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
.
Ответ 2
Установите resizeToAvoidBottomInset
на false
вместо resizeToAvoidBottomPadding
, что не рекомендуется.
return Scaffold(
resizeToAvoidBottomInset : false,
body: YourWidgets(),
);
Ответ 3
В зависимости от варианта использования вы также можете рассмотреть возможность использования listview. Это обеспечит прокрутку содержимого, когда места недостаточно. В качестве примера вы можете посмотреть демонстрацию текстовое поле в приложении галереи