По какой-то причине после обновления флаттера один из разделов моего приложения был поврежден. У меня есть список виджетов текстовой формы, установленный в SingleChildScrollView. Всякий раз, когда я нажимаю одну из текстовых форм, появляется клавиатура, и пустое белое поле выдвигается в поле обзора, скрывая поля ввода текста.
После некоторых проблем с вводом текста в виде списка, прежде чем я последовал совету по этой ссылке: https://www.didierboelens.com/2018/04/hint-4-ensure-a-textfield-or-textformfield-is-visible-in-the-viewport-when-has-the-focus/
Это эффективно решило проблемы, которые у меня были ранее, когда поля ввода текста не оставались видимыми при появлении клавиатуры. Но теперь появляется поле while, которое скрывает вид. Я также убедился, что использовал:
resizeToAvoidBottomPadding: false
, как это регулярно рекомендуется.
Ниже приведен код с одним из кодов виджета текстового поля:
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new SafeArea(
child: new Form(
key: _formKey,
child: new SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
circumstances(),
divider(),
description(),
divider(),
externalHappenings(),
divider(),
internalHappenings(),
divider(),
reflectionsAndCorrections(),
divider(),
abatement(),
divider(),
footerButtons()
],
),
)
)
),
resizeToAvoidBottomPadding: false,
);
}
Widget circumstances() {
return new EnsureVisibleWhenFocused(
focusNode: _focusNodeCircumstances,
child: new TextFormField(
controller: _circumstancesController,
maxLines: maxLines,
decoration: const InputDecoration(
border: const OutlineInputBorder(
borderRadius: const BorderRadius.all(const Radius.circular(0.0)),
borderSide: const BorderSide(color: Colors.black, width: 1.0)
),
filled: true,
labelText: "Circumstances",
hintText: "Who was there? Where were you?",
),
autofocus: true,
validator: (value) {
_activeJournalEntry.setCircumstances(value);
if(value == null || value.isEmpty) {
return "Please enter some circumstances.";
}
},
focusNode: _focusNodeCircumstances,
),
);
}