键盘出现时颤振溢出底部

时间:2020-04-04 23:58:44

标签: android ios flutter mobile overflow

我遇到此错误,我无法理解为什么,在新屏幕上,我在顶部(列的开头)有一个简单的表单,当我将焦点放在文本字段时,键盘出现,并且溢出了日期选择和按钮,但是我不知道为什么。

这里是文本字段的初始状态 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 个答案:

答案 0 :(得分:2)

您可以将resizeToAvoidBottomInset中的Scaffold()设置为false

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

文档参考:https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

答案 1 :(得分:1)

这是初学者水平的问题。不知道为什么大多数教程在显示TextField Widget之前都没有解决这个问题。

列小部件是固定的,不会滚动。因此,将Column更改为ListView。什么也别做。小部件将获得滚动功能,并且不再发生溢出问题。