Флаттер переполняет дно при появлении клавиатуры - PullRequest
0 голосов
/ 05 апреля 2020

Я получил эту ошибку, и я не могу понять, почему, на новом экране я получил простую форму сверху (начало столбца), когда я фокусирую текстовое поле, появляется клавиатура и переполняется выбор даты и кнопка, но я не знаю, почему.

Вот начальное состояние, когда фокус на текстовом поле enter image description here

, и вот когда я фокусирую текстовое поле. enter image description here

Это виджет, который я должен сделать.

return Scaffold(
  body: SafeArea(
      child: Column(
    children: <Widget>[
      TopBarWidget(page: 'New Event', title: 'Nuevo Evento'),
      Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextField(
              onChanged: (value) {
                eDisplayName = value;
              },
              maxLength: 18,
              keyboardType: TextInputType.text,
              textCapitalization: TextCapitalization.sentences,
              cursorColor: Color(0xFFFC4A1A),
              decoration: InputDecoration(
                labelText: "Nombre del Evento",
                fillColor: Colors.white,
                border: new OutlineInputBorder(
                  borderRadius: new BorderRadius.circular(5.0),
                ),
              ),
            ),
            SizedBox(
              height: 16.0,
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                OutlineButton(
                  focusColor: Theme.of(context).primaryColor,
                  highlightedBorderColor: Theme.of(context).primaryColor,
                  borderSide: BorderSide(
                    color: Theme.of(context).primaryColor,
                  ),
                  textColor: Theme.of(context).primaryColor,
                  onPressed: () => _selectDate(context),
                  child: Text('Cambiar Fecha'),
                ),
                Text(
                  "${formatedDate(selectedDate.toLocal())}",
                  style: TextStyle(
                      fontSize: 18.0,
                      fontWeight: FontWeight.w500,
                      color: Theme.of(context).primaryColor),
                ),
                // Text("${selectedDate.toLocal()}"),
              ],
            ),
            SizedBox(
              height: 16.0,
            ),
            RaisedButton(
              disabledColor: Colors.grey[200],
              disabledTextColor: Colors.black,
              color: Theme.of(context).primaryColor,
              textColor: Colors.white,
              shape: RoundedRectangleBorder(
                  borderRadius: new BorderRadius.circular(10.0)),
              onPressed: eDisplayName.length == 0
                  ? null
                  : () {
                      // print(newEvent);
                      Navigator.pop(context);
                    },
              child: Text(
                'ACEPTAR',
                // style: TextStyle(fontSize: 20),
              ),
            ),
          ],
        ),
      ),
    ],
  )),
);

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Yo может установить значение false resizeToAvoidBottomInset в вашем Scaffold()

Как это

return Scaffold(
  resizeToAvoidBottomInset: false,
  body: // ...
  // ...
)

Ссылка на документацию: Scaffold - resizeToAvoidBottomInset

1 голос
/ 05 апреля 2020

Это проблема начального уровня. Не знаю, почему в большинстве уроков эта проблема не рассматривается до показа виджета TextField.

Виджет столбца исправлен и не прокручивается. Так что измените Column на ListView. И больше ничего не делай. Виджет получит функцию прокрутки, и проблема переполнения больше не будет возникать.

...