首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振/安卓-将焦点从TextField移动到DropdownButton

颤振/安卓-将焦点从TextField移动到DropdownButton
EN

Stack Overflow用户
提问于 2018-07-26 08:21:49
回答 4查看 9.9K关注 0票数 16

我有一个文本框和一个下拉按钮在屏幕上。当我从文本框中选择一个项目,然后返回到textfield时,我发现这有点尴尬。

  1. 输入文本字段
  2. 点击两次选择下拉菜单。

我的问题是,您必须点击两次,一次退出文本字段,第二次访问下拉列表-有方法退出文本框,并在一个点击打开下拉列表吗?这是内置在Android还是颤振控制中的?

下面是一些显示下拉和文本框的颤振代码.

代码语言:javascript
复制
class _TextAndDropdownState extends State<TextAndDropdown> {
  int selectedDropdown;
  String selectedText;
  final textController = new TextEditingController();

  @override
  void initState() {
    super.initState();

    selectedDropdown = 1;

    textController.addListener(() => print(''));
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('Text and dropdown'),
      ),
      body: Container(
        child: Column(
          children: [
            Padding(
              padding: EdgeInsets.all(10.0),
            ),
            DropdownButton(value: selectedDropdown, onChanged: _dropdownChange, items: [
              DropdownMenuItem(
                child: Text('First'),
                value: 1,
              ),
              DropdownMenuItem(child: Text('Seconds')),
            ]),
            TextField(controller: textController),
          ],
        ),
      ),
    );
  }

  void _dropdownChange(val) {
    setState(() {
      selectedDropdown = val;
    });
  }
}
EN

回答 4

Stack Overflow用户

发布于 2019-01-18 12:28:02

抱歉你的回答太迟了..。我也在为这个找到解决办法。现在我明白了。

只是你得加上这个

代码语言:javascript
复制
 FocusScope.of(context).requestFocus(new FocusNode());

在您的

_dropdownChange(val)

代码语言:javascript
复制
void _dropdownChange(val) {
                      FocusScope.of(context).requestFocus(new FocusNode());///It will clear all focus of the textfield
            setState(() {
              selectedDropdown = val;
                     });
                           }

也请参阅Abdul Wahab的答复

票数 31
EN

Stack Overflow用户

发布于 2020-06-13 09:11:34

目前在颤振GitHub回购中有一个关于这个问题的持续问题。到目前为止,这个问题还没有解决,但是有一个方便的解决方法,这句话暗示。

您可以将FocusManager.instance.primaryFocus.unfocus();添加到您的DropdownButton的onTap()事件中,该事件应该“窃取”以前专注于下拉菜单的TextField的焦点。

票数 3
EN

Stack Overflow用户

发布于 2020-05-17 00:00:25

@Dithest答案是正确的,但在这个用例中,一个问题仍然是当用户在下拉菜单之外点击,然后文本字段重新聚焦,键盘打开。我围绕这个问题所做的工作也是在onTap侦听器DropDownButton中添加以下代码

FocusScope.of(context).requestFocus(new FocusNode());/它将清除文本字段的所有焦点

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51534205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档