首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在TextField中将焦点给予IconButton

仅在TextField中将焦点给予IconButton
EN

Stack Overflow用户
提问于 2019-08-12 16:58:48
回答 1查看 614关注 0票数 2

我有一个用来输入密码的TextFormField,它有一个切换obscureTextIconButton。我想让它在按钮被单击时,文本字段不会成为焦点。然而,事实并非如此。我想这和FocusNode有关。

代码语言:javascript
复制
ValueListenableBuilder<bool>(
  valueListenable: _obscureText,
  builder: (context, obscureText, child) => TextFormField(
    obscureText: obscureText,
    decoration: InputDecoration(
      suffixIcon: IconButton(
        icon: Icon(obscureText ? Icons.visibility_off : Icons.visibility),
        onPressed: () => _obscureText.value = !obscureText,
      ),
    ),
  ),
),

有没有人知道解决方案?

EN

回答 1

Stack Overflow用户

发布于 2019-08-12 17:47:45

你所需要的是

代码语言:javascript
复制
FocusNode.unfocus()

onPressed()方法中的setState之后调用它。

输出:

完整的解决方案:

代码语言:javascript
复制
bool obscureText = false;
FocusNode _focusNode = FocusNode();

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(),
    body: Padding(
      padding: const EdgeInsets.all(24.0),
      child: Column(
        children: <Widget>[
          TextFormField(
            focusNode: _focusNode,
            obscureText: obscureText,
            decoration: InputDecoration(
              suffixIcon: IconButton(
                icon: Icon(obscureText ? Icons.visibility_off : Icons.visibility),
                onPressed: () {
                  setState(() => obscureText = !obscureText);
                  Timer.run(() => _focusNode.unfocus());
                },
              ),
            ),
          ),
          TextField(),
        ],
      ),
    ),
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57458243

复制
相关文章

相似问题

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