这个问题与 Flutter 有关。我在 TextField 上方有一个 DropdownButton,如下所示:
DropdownButton<String>(
isExpanded: true,
hint: Text(associatedHint),
disabledHint: Text(associatedHint),
items: diagnosesList.map((int value) {
return DropdownMenuItem<String>(
value: value.toString(),
child: Text(dxDisplay),
);
}).toList(),
value: ANID,
onChanged: (String newANID) {
setState(() {
ANID = newANID;
});
},
),
TextField(
autofocus: true,
keyboardType: keyboardType,
maxLines: maxLines,
textCapitalization: TextCapitalization.sentences,
controller: _textEntryController,
decoration: InputDecoration(hintText: "Entry"),
onChanged: (value) {
noteEntry = value;
},
),
Run Code Online (Sandbox Code Playgroud)
TextField 自动对焦会立即调出键盘。当您点击 DropdownButton 时,它会从 TextField 中移除焦点,从而关闭键盘。这会在屏幕上移动内容并造成糟糕的用户体验。
关于如何解决这个问题有什么建议吗?有没有办法即使在点击 DropdownButton 后也能保持键盘处于抬起状态?
终于找到了解决办法。需要将 AlertDialog 包装在 SingleChildScrollView 中。这会在屏幕顶部打开 AlertDialog,并且在键盘打开/关闭时不会移动它。它还确保如果内容太长(垂直),它可以在键盘下方滑动,并且用户可以使用滚动手势来查看隐藏内容/与隐藏内容进行交互。
return SingleChildScrollView(
child: AlertDialog(
title: alertTitle,
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget> [
DropdownButton<String>(
.......
),
TextField(
autofocus: true,
.......
),
],
),
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1860 次 |
| 最近记录: |