Я работаю над проектом Flutter, и я пытался создать AlertDialog, похожий на диалог опции , указанный в Руководстве по MaterialDesign , но с TextInput внизу.
I мне удалось получить что-то похожее на то, что я хочу, но есть проблема, которую я не могу решить: когда пользователь нажимает на TextInput и появляется клавиатура, я бы хотел, чтобы TextInput находился поверх клавиатуры, а представление списка становилось меньше на оси Y (вот почему я просто устанавливаю maxHeight на ConstrainedBox), чтобы пользователь мог видеть, что он пишет, но я получаю прямо противоположное, просмотр списка сохраняет тот же размер, а InputText не виден.
Я попытался изменить представление списка с помощью столбца, вложенного в SingleChildScrollView, или обернуть весь исходный столбец в SingleChildScrollView, но, похоже, ни один из них не работает. Это мой текущий код:
@override
Widget build(BuildContext context) {
return AlertDialog(
title: Text(widget.title),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(20))
),
actions: <Widget>[
FlatButton(
child: const Text('CANCEL'),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
textColor: Theme.of(context).accentColor,
onPressed: () {
widget.onCancel();
},
),
FlatButton(
child: const Text('OK'),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
textColor: Theme.of(context).accentColor,
onPressed: () {
widget.onOk();
},
),
],
content: Container(
width: double.maxFinite,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Divider(),
ConstrainedBox(
constraints: BoxConstraints(
maxHeight: MediaQuery.of(context).size.height*0.4,
),
child: ListView.builder(
shrinkWrap: true,
itemCount: widget.exercises.length,
itemBuilder: (BuildContext context, int index){
return RadioListTile(
title: Text(widget.exercises[index].name),
value: index,
groupValue: _selected,
onChanged: (value){
setState(() {
_selected = index;
});
}
);
}
),
),
Divider(),
TextField(
autofocus: false,
maxLines: 1,
style: TextStyle(fontSize: 18),
decoration: new InputDecoration(
border: InputBorder.none,
hintText: widget.hintText,
),
),
],
),
),
);
}
Может ли кто-нибудь помочь мне?
Большое спасибо !!